题解 | #最简真分数#
最简真分数
https://www.nowcoder.com/practice/1f1db273eeb745c6ac83e91ff14d2ec9
//最简真分数是指分子分母的最大公因数为1的真分数 //本题不同组合即可,不需要不同组合的分数值必须不同 #include <iostream> #include <vector> using namespace std; int GCD(int a,int b) { if(b==0)return a; else{ return GCD(b,a%b); } return 0; } int main() { int n; while (cin >> n) { if(n==0)break; int nn[n+1]; vector<double> zfs; zfs.clear(); for(int i=1;i<=n;i++) { cin>>nn[i]; } for(int i=1;i<=n;i++) { for(int j=i+1;j<=n;j++) { double gcd=GCD(nn[i],nn[j]); if(gcd!=1)continue; double c=nn[i]; double d=nn[j]; double temp; if(c<d) { temp=c; c=d; d=temp; } double element=(d/gcd)/(c/gcd); // int count=0; // for(int k=0;k<zfs.size();k++) // { // if(element!=zfs[k])count++; // } // if(count==zfs.size()) zfs.push_back(element); } } // for(int k=0;k<zfs.size();k++) // { // cout<<zfs[k]<<" "; // } cout<<zfs.size()<<endl; } }