给出n个正整数,任取两个数分别作为分子和分母组成最简真分数,编程求共有几个这样的组合
输入描述:
每组包含n(n<=600)和n个不同的整数,整数大于1且小于等于100
输出描述:
每行输出最简真分数组合的个数。
示例1
输入
7
3 5 7 9 11 13 15
3
2 4 5
0
输出
17
2
题解
用GCD求最大公倍数,如果分子小于分母且GCD返回值为1,那么计数+1
c++11
#include<cstdio>
#include<iostream>
#define N 600
using namespace std;
int GCD(int x,int y){
if (y==0) return x;
else return GCD(y,x%y);
}
int main(){
int n,count;
int buf[N];
while(cin>>n){
for(int i=0;i<n;i++){
cin>>buf[i];
}
count=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++;}
}
}
cout<<count<<endl;
}
return 0;
}
总结
GCD要背下来
int GCD(int x,int y){
if (y==0) return x;
else return GCD(y,x%y);
}
版权声明:本文为qq_43141376原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。