3338 蓝桥杯 wyz的数组IV 简单

3338 蓝桥杯 wyz的数组IV 简单

复制代码
//C++风格解法1,通过率50%
#include<bits/stdc++.h>

int main(){
	std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);
	int n;	std::cin >> n;
	int ans = 0;
	std::vector<int>a(n);
	for(auto &x: a)std::cin >> x;
	for(int i = 0; i < n; i++){
		for(int j = i + 1; j < n; j++){
			if(std::gcd(a[i], a[j]) == 2)ans = std::max(ans, i + j + 2);  //gcd()
            // i + j + 2 的原因是:下标从0,但第几个从 1 开始,两个数 + 2
			// C++中,std::__gcd(x, y)(C98) 和 std::gcd(x,y)(C++17) 直接求 x,y 的最大公约数
      // n * n, n = 10^5, n * n = 10^(10),1s一般是 2 * 10^8
    }
	}
	std::cout << ans <<'\n';
	
	return 0;
}

//C风格解法2,通过率100%
#include<bits/stdc++.h>

const int N = 1e3 + 1;

int mx[N]; // mx_i 表示的 i 这个数值的数在原数组的最大下标,桶

int main(){
	int n;    scanf("%d", &n); // 读入 n
  int ans = 0;
  for(int i = 1; i <= n; i++){    
    int x;    scanf("%d", &x); // 输入 a_i
    
    if(x == 2){
      if(mx[2] != 0)ans = std::max(ans, mx[2] + i);
    }
    mx[x] = std::max(mx[x], i);
  }
	
  for(int i = 2; i <= 1000; i++){ // 枚举的是值,而不是下标,10^3
    for(int j = i + 1; j <= 1000; j++){ // 枚举的是值,而不是下标,10^3
      if(mx[i] == 0 || mx[j] == 0)continue; // 如果 i 或 j 没有出现,就 contine
      if(std::gcd(i,j) != 2)continue;
      ans = std::max(ans, mx[i] + mx[j]);
    }
  }
  printf("%d\n", ans);
	return 0;
}

reference:

【C++】_gcd(x,y)函数∑ y∈c gcd(x,y)-CSDN博客

最大公约数 ------ Greatest Common Divisor(GCD) - 知乎 (zhihu.com)
​​​​​​
[详解-vector] C++必知必会 vector常用各种操作解析 - 知乎 (zhihu.com)

相关推荐
j_xxx404_42 分钟前
C++算法入门:二分查找合集(二分查找|在排序数组中查找元素的第一个和最后一个位置)
开发语言·c++
lizz311 小时前
C++操作符重载深度解析
java·c++·算法
十五年专注C++开发1 小时前
QTableWidget和QTableView插入数据比较
c++·qt·qtablewidget·qtableview
无限进步_1 小时前
【C语言】队列(Queue)数据结构的实现与分析
c语言·开发语言·数据结构·c++·算法·链表·visual studio
特立独行的猫a1 小时前
Google C++ 编码规范核心要点总结 (2025精简版)
开发语言·c++·编码规范
李余博睿(新疆)1 小时前
c++经典练习题-分支练习(2)
c++·算法
superman超哥1 小时前
仓颉语言中网络套接字封装的深度剖析与工程实践
c语言·开发语言·c++·python·仓颉
暗然而日章2 小时前
C++基础:Stanford CS106L学习笔记 11 Lambdas表达式
c++·笔记·学习
辞旧 lekkk2 小时前
【c++】c++11(上)
开发语言·c++·学习·萌新
彭世瑜2 小时前
C/C++:libfort用于在终端输出表格
c语言·开发语言·c++