文章

7

粉丝

211

获赞

10

访问

37.1k

头像
先排序,再循环求解
P1180 北京大学/北京航空航天大学机试题
发布于2022年3月16日 15:59
阅读数 5.1k

#include<iostream>
#include<algorithm>
using namespace std;

int gcd(int a, int b) {
	if (b == 0) return a;
	return gcd(b, a%b);
}

int main() {
	int n, a[600];
	while (cin >> n) {
		for (int i = 0; i < n; i++)
			cin >> a[i];
		sort(a, a + n);
		int cnt = 0;
		for (int i = 0; i < n; i++) {
			for (int j = i + 1; j < n; j++) {
				if (a[i] < a[j] && gcd(a[i], a[j]) == 1) cnt++;
			}
		}
		cout << cnt << endl;
	}
	return 0;
}

里层循环如果写j=i+1,必须满足数组升序,否则数量会计算少

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发