题解 | #最简真分数#

最简真分数

https://www.nowcoder.com/practice/1f1db273eeb745c6ac83e91ff14d2ec9

#include <algorithm>
#include <bits/stdc++.h>
#include <vector>
using namespace std;
//a<b
void zuixiaogongbeishu(int a,int b,int& zxgbs)
{
    if(a==b-a)
    {
        zxgbs=a;
        return;
    }
    if(a>b-a)
    zuixiaogongbeishu(b-a,a,zxgbs);
    else 
    zuixiaogongbeishu(a,b-a,zxgbs);
}
int main() {
    int n;
    while(cin>>n)
    {
        int data;
        int res=0;
        vector<int> num;
        while(n--)
        {
            cin>>data;
            num.push_back(data);
        }
        sort(num.begin(), num.end());
        for(int i=0;i<num.size();i++)
        {
            for(int j=i+1;j<num.size();j++)
            {
                if(num[j]%num[i]==0) continue;//小优化
                int zxgbs;
                zuixiaogongbeishu(num[i],num[j],zxgbs);
                //最小公倍数是1的话就是最简
                if(zxgbs==1) res++;
            }
        }
        if(res) cout<<res<<endl;
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

2025-11-26 09:37
山西大学 测试工程师
我要娶个什么名:学长你电脑闹鬼了
点赞 评论 收藏
分享
01-03 12:06
复旦大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务