一个分数是否可以除尽
首先约分,1/2, 1/125可以除尽的原因是:十进制10=2*5->1/2,1000=2^3*5^3->1/125也就是10包括了2,125的所有质因数
b进制下,分母q是有限小数的充分条件是b有q的所有质因数

因此,这个问题就转化为了:
求b是否包含了q的所有质因子
一般是想到全部罗列再比较(超时),
这里就可以用gcd的办法,找出两者gcd如果gcd可以整除q,则b包所有q的质因子
——这里还可以优化下,就是b的除gcd以外的因子都没有用所有所以b=gcd

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

long long  n,g,p,q,b;

long long gcd(int a,int b){
	return b?gcd(b,a%b):a;
}
int main(int argc, char** argv) {
	scanf("%lld",&n);
	while(n--){
		scanf("%lld%lld%lld",&p,&q,&b);
		q/=gcd(p,q);
		while(1){
//			g=gcd(q,b);//未优化
//			while(q%g==0){
//				q/=g;
//			}
			b=gcd(q,b);
			if(b==1){
				if(q==1) puts("Finite");
				else puts("Infinite");
				break;
			}
			while(q%b==0){
				q/=b;
			}
			
		}
	}
	return 0;
}