题解 | #最简真分数#
最简真分数
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;
}
}
