Codeforces Round #483 (Div. 2)C题

C. Finite or not?
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

You are given several queries. Each query consists of three integers p

, q and b. You need to answer whether the result of p/q in notation with base b

is a finite fraction.

A fraction in notation with base b

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.

Input

The first line contains a single integer n

(1n105) — the number of queries.

Next nlines contain queries, one per line. Each line contains three integers p, q, and b (0p1018, 1q1018, 2b1018).

All numbers are given in notation with base 10

.

Output

For each question, in a separate line, print Finite if the fraction is finite and Infinite otherwise.

Examples
Input
Copy
2
6 12 10
4 3 10
Output
Copy
Finite
Infinite
Input
Copy
4
1 1 2
9 36 2
4 12 3
3 5 4
Output
Copy
Finite
Finite
Finite
Infinite
Note

612=12=0,510

43=1,(3)10

936=14=0,012

412=13=0,13

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <math.h>
//codeforces
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    int n;
    long long p,q,b,temp;
    cin>>n;
    while(n--){
    cin>>p>>q>>b;
    temp=__gcd(p,q);
    p/=temp;q/=temp;
    int flag=1;
    while(1){
            if(q==1){
            break;
        }
        temp=__gcd(q,b);
        if(temp==1){
            cout<<"Infinite"<<endl;
            flag=0;break;
        }
        while(q%temp==0){
            q/=temp;
        }
    }
    if(flag) cout<<"Finite"<<endl;
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/hugokung/p/9057274.html