题意:给出分母,分子和进制,要求判断该数是否为有限小数。
Solution
表示并不知道怎么判断。
度娘:“一个分数在最简分数的情况下,如果它的分母只含有2和5两个质因数,这个分数就能化成有限小数.”。
感觉这个和进制有些关系,因为2和5恰好是进制10质因数分解后的结果。
那么问题变成了判断分母所含的质因数是否都为进制的质因数。
用辗转相处法求解。
注意最开始要讲分式化简(直接化简应该没有问题)。
Code
#include<iostream> #include<cstdio> using namespace std; typedef long long ll; ll p,q,b; int n,flag; ll gcd(ll a,ll b){return b?gcd(b,a%b):a;} int main(){ scanf("%d",&n); while(n--){ scanf("%lld%lld%lld",&p,&q,&b);flag=1; q/=gcd(q,p); while(q!=1){ ll x=gcd(q,b); q/=x;b=x; if(q!=1&&b==1){ printf("Infinite "); flag=0; break; } } if(flag)printf("Finite "); } return 0; }