牛客网——最简真分数

题目描述

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

输入描述:

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

输出描述:

每行输出最简真分数组合的个数。
链接:https://www.nowcoder.com/questionTerminal/1f1db273eeb745c6ac83e91ff14d2ec9
来源:牛客网

#include <stdio.h>
#define N 600
 
int gcd(int a, int b)//欧几里得算法求最大公约数
{
    if(b==0) return a;
    else return gcd(b, a%b);
}
 
int main()
{
    int buf[N];
    int count, n;
    while(scanf("%d", &n)!=EOF)
    {
        for(int i=0; i<n; i++)
        {
            scanf("%d", &buf[i]);
        }
        count=0;//总计0个真分数
        for(int i=0; i<n; i++)//分母
        {
            for(int j=0; j<n; j++)//分子
            {
                if(i==j) continue;
                else if(buf[i]>buf[j] && gcd(buf[i], buf[j])==1)
                {
                    count++;
                }
            }
        }
        printf("%d\n", count);
    }
    return 0;
}

 

posted @ 2018-12-19 21:47  JAYPARK01  阅读(535)  评论(0编辑  收藏  举报