1. 程式人生 > >C. Finite or not? Codeforces Round #483 (Div. 2)該進位制下的分數是不是有限迴圈小數。

C. Finite or not? Codeforces Round #483 (Div. 2)該進位制下的分數是不是有限迴圈小數。

/*
判斷該進位制下的分數是不是有限迴圈小數。

方法:
    將分子分母化為最簡,判斷分母在該進位制下是否能化掉
    因為由十進位制小數化為其他進位制小數的經驗可以看出來
    該小數不斷乘以一個數取整數位,最後將小數化為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; }