AcWing 4484. 有限小数

结论:如果p/q可以在b进制下用k位小数表示,那么q可以整除b^k,该条件为充分必要条件。
q|b^k 等价于 q的质因子在b的质因子中全部出现过,直接枚举质因子超时,有一种更快的方法:
每次将q除以gcd(q,b),可以在O((logn)^2)的时间复杂度下快速判断
#include<bits/stdc++.h>
using namespace std;

#define int long long 
#define fr first
#define se second

typedef pair<int,int> PII;
typedef unsigned long long ULL;

const int INF = 0X3f3f3f3f,N = 2e6+10,MOD = 1e9+10;

int gcd(int a,int b){
    return b?gcd(b,a%b):a;
}

void work(){
    int p,q,b;
    scanf("%lld %lld %lld",&p,&q,&b);
    int d=gcd(p,q);
    q/=d;
    while(q>1){
        d=gcd(q,b);
        if(d==1) break;
        while(q%d==0) q/=d;
    }
    if(q==1) puts("YES");
    else puts("NO");
}

signed main(){
    int test;
    cin>>test;

    while(test--)
    {
        work();
    }

    return 0;
} 
posted @ 2022-06-19 22:59  xhy666  阅读(41)  评论(0)    收藏  举报