筷子与饺子
Published on 2019-11-11 04:08 in 暂未分类 with 筷子与饺子

最简真分数 - 牛客

题目描述

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

输入描述:

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

输出描述:

每行输出最简真分数组合的个数。
示例1

输入

7
3 5 7 9 11 13 15

输出

17 

思路分析

本道题目的关键就是看 两个整数是否具有公约数,即是否为最简分数

采用一个比较简洁的算法:欧几里得算法

比较巧妙

1 int gcd(int a, int b)//欧几里得算法求最大公约数
2 {
3     if(b==0) return a;
4     else return gcd(b, a%b);
5 }

整个算法就变得很简单:

 1 int main()
 2 {
 3     int N;
 4     while(cin>>N)
 5     {
 6         int a[N];
 7         for(int i=0;i<N;i++)
 8         {
 9             cin>>a[i];
10         }
11         int count = 0;
12         for(int i=0;i<N;i++)
13             for(int j =0;j<N;j++)
14             {
15                 if(i==j) continue;
16                 if(a[i]<a[j] && gcd(a[i],a[j])==1)
17                     count++;
18             }
19         
20         cout << count <<endl;
21     }
22 }

 

posted @ 2019-08-25 17:27  筷子与饺子  阅读(...)  评论(...编辑  收藏