结论:如果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;
}