| Run ID | 作者 | 问题 | 语言 | 测评结果 | Time | Memory | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|
| 155133 | 黄俊然 | 最简真分数 | C++ | Accepted | 12 MS | 276 KB | 999 | 2026-05-31 15:52:23 |
#include <iostream> #include <vector> using namespace std; // 欧几里得算法求最大公约数 int gcd(int a, int b) { while (b != 0) { int temp = a % b; a = b; b = temp; } return a; } int main() { int n; cin >> n; vector<int> nums(n); // 读入n个数字 for (int i = 0; i < n; ++i) { cin >> nums[i]; } int count = 0; // 枚举所有 i < j 的组合,nums[i]做分子,nums[j]做分母 for (int i = 0; i < n; ++i) { for (int j = i + 1; j < n; ++j) { int a = nums[i]; int b = nums[j]; // 分两种情况:分子<分母 且 互质 if (a < b && gcd(a, b) == 1) { count++; } // 交换后再判断(i,j互换,分子分母颠倒) if (b < a && gcd(b, a) == 1) { count++; } } } cout << count << endl; return 0; }