文章

79

粉丝

221

获赞

45

访问

161.1k

头像
最简真分数数量
P1180 北京大学/北京航空航天大学机试题
发布于2023年3月24日 11:29
阅读数 1.9k

#include <iostream>
using namespace std;
int main() {
	int n;
	while (cin >> n) {
		int* a = new int[n], sum = 0;
		for (int i = 0; i < n; i++)
			cin >> a[i];
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++)
				if (a[i] < a[j]) {
					int flag = 0;
					for (int k = 2; k <= a[i]; k++)
						if (a[i] % k == 0 && a[j] % k == 0) {
							flag = 1;
							break;
						}
					if (flag == 0)
						sum++;
				}
		}
		cout << sum << endl;
	}
	return 0;
}

思路:

输入n个数,遍历它们,a[i]作为分子,a[j]作为分母,真分数为必须为分子小于分母且不可化简的分数,不可化简的意思就是分子与分母不可以有公因数或者说最大公约数为1。故3层遍历,第一层为遍历分子,第二层为遍历分母,若分子小于分母则再次循环判断分子与分母是否有公因数,若没有则sum++。

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发