You are given several queries. Each query consists of three integers pp, qq and bb. You need to answer whether the result of p/qp/q in notation with base bb is a finite fraction.
A fraction in notation with base bb is finite if it contains finite number of numerals after the decimal point. It is also possible that a fraction has zero numerals after the decimal point.
The first line contains a single integer nn (1≤n≤1051≤n≤105) — the number of queries.
Next nn lines contain queries, one per line. Each line contains three integers pp, qq, and bb (0≤p≤10180≤p≤1018, 1≤q≤10181≤q≤1018, 2≤b≤10182≤b≤1018). All numbers are given in notation with base 1010.
For each question, in a separate line, print Finite if the fraction is finite and Infinite otherwise.
2 6 12 10 4 3 10
Finite Infinite
4 1 1 2 9 36 2 4 12 3 3 5 4
Finite Finite Finite Infinite
612=12=0,510612=12=0,510
43=1,(3)1043=1,(3)10
936=14=0,012936=14=0,012
412=13=0,13
#include<bits/stdc++.h> using namespace std; typedef long long ll; #define gcd __gcd int main() { ll T,p,q,b; scanf("%lld",&T); while(T--){ scanf("%lld%lld%lld",&p,&q,&b); ll t=gcd(p,q); q/=t; t=b; while(q!=1){ t=gcd(q,t); q/=t; if(t==1)break; } if(q==1){ printf("Finite\n"); }else{ printf("Infinite\n"); } } return 0; }
参考:https://blog.csdn.net/xs18952904/article/details/80331434
https://blog.csdn.net/z_sea/article/details/80334032
https://www.guokr.com/question/487631/