题解 | 最简真分数

最简真分数

https://www.nowcoder.com/practice/1f1db273eeb745c6ac83e91ff14d2ec9

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<iostream>
#include<vector>
#include<cstring>
#include<queue>
#include<algorithm>
using namespace std;

//给出n个正整数,任取两个数分别作为分子和分母组成最简真分数,编程求共有几个这样的组合。

//每组包含n(n<=600)和n个不同的整数,整数大于1且小于等于1000。

//每行输出最简真分数组合的个数。

//思路: 先输入n个数组成的数组。
//       采用穷举法,arr[0] 和arr[1--n-1] 进行比较
//      比较方法:判断是否有除了1以外的公因子,若有,则sum++,否则继续比较


int compare(int a, int
            b) { //比较方法:判断是否有除了1以外的公因子,若有,则sum++,否则继续比较
    int maxNum;
    for (int i = 1; i <= min(a, b); i++) {
        if ((a % i == 0) && (b % i == 0)) {
            maxNum = i;
        }
    }
    return maxNum;
}

int main() {
    int n;
    while (scanf("%d", &n) != EOF) {
        if (n == 0) {
            break;
        }
        vector<int> arr;
        for (int i = 0; i < n; i++) { //先输入n个数组成的数组。
            int m;
            scanf("%d", &m);
            arr.push_back(m);
        }
        //  采用穷举法,arr[0] 和arr[1--n-1] 进行比较 以此类推
        int sum = 0;
        for (int i = 0; i < n; i++) {
            for (int j = i + 1; j < n; j++) {
                if (compare(arr[i], arr[j]) == 1) sum++;;
            }
        }
        printf("%d\n", sum);
    }
    return 0;
}

全部评论

相关推荐

挣K存W养DOG:他的价值在于把他家里积攒的财富回馈给社会
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务