十进制转k进制

整数部分,不断做除法,并取余数,最后倒置。

小数部分,不断做乘法,并取出整数部分。

例题 AcWing 4484. 有限小数

#include<bits/stdc++.h>
using namespace std;

typedef long long LL;
LL GCD(LL a,LL b)
{
    if(a%b==0) return b;
    return GCD(b,a%b);
}

int main()
{
    int n;
    cin>>n;
    while(n--)
    {
        LL a,b,c;
        cin>>a>>b>>c;
        LL gcd=GCD(a,b);
        a/=gcd;b/=gcd;
        
        gcd=GCD(b,c);
        while(gcd!=1)
        {
            while(b/gcd*gcd==b)
                b/=gcd;
            gcd=GCD(b,c);
        }
        if(b==1) cout<<"YES"<<endl;
        else cout<<"NO"<<endl;
    }
}
View Code

 

posted @ 2022-06-19 11:24  80k  阅读(74)  评论(0)    收藏  举报