/*
判断该进制下的分数是不是有限循环小数。
方法:
将分子分母化为最简,判断分母在该进制下是否能化掉
因为由十进制小数化为其他进制小数的经验可以看出来
该小数不断乘以一个数取整数位,最后将小数化为0
取出来的个整数位即为该进制下的小数表示,所以由此可知
该分数不断乘以这个进制数,如果分母最后能消掉,则
该进制下的分数是有限循环小数。
*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b){
return b==0?a:gcd(b,a%b);
}
int main(){
ll n,p,q,d;
while(scanf("%I64d",&n)!=EOF){
while(n--){
scanf("%I64d%I64d%I64d",&p,&q,&d);
if(p==0)
printf("Finite\n");
else{
ll t=gcd(p,q);
p/=t;
q/=t;
if(q==1)
printf("Finite\n");
else{
ll t;
while((t=gcd(q,d))!=1){
while(q%t==0){
q/=t;
}
}
if(q==1)
printf("Finite\n");
else
printf("Infinite\n");
}
}
}
}
return 0;
}
C. Finite or not? Codeforces Round #483 (Div. 2)该进制下的分数是不是有限循环小数。
最新推荐文章于 2022-03-25 17:38:54 发布