LightOJ1215 Finding LCM

来源:互联网 发布:c 程序员发展方向 编辑:程序博客网 时间:2024/06/01 20:24

LCM is an abbreviation used for Least Common Multiple in Mathematics. We say LCM (a, b, c) = L if and only if L is the least integer which is divisible by a, b and c.

You will be given a, b and L. You have to find c such that LCM (a, b, c) = L. If there are several solutions, print the one where c is as small as possible. If there is no solution, report so.

Input

Input starts with an integer T (≤ 325), denoting the number of test cases.

Each case starts with a line containing three integers a b L (1 ≤ a, b ≤ 106, 1 ≤ L ≤ 1012).

Output

For each case, print the case number and the minimum possible value of c. If no solution is found, print 'impossible'.

Sample Input

Output for Sample Input

3

3 5 30

209475 6992 77086800

2 6 10

Case 1: 2

Case 2: 1

Case 3: impossible


#include <iostream>#include <cstdio>#include <map>#include <set>#include <vector>#include <queue>#include <stack>#include <cmath>#include <algorithm>#include <cstring>#include <string>using namespace std;#define INF 0x3f3f3f3ftypedef long long LL;#define maxn 5000000int main(){    int t;    LL a,b,l;    scanf("%d",&t);    for(int i=1;i<=t;i++){        cin>>a>>b>>l;        if(l%b||l%a){            printf("Case %d: impossible\n",i);            continue;        }        LL c=1;        for(int j=2;j<1000005;j++){            if(l==1){                break;            }            if(l%j==0){                LL s=1;                while(l%j==0){                    l/=j;                    s*=j;                }                if(a%s&&b%s){                    c*=s;                }            }        }        if(l>1){            c*=l;        }        printf("Case %d: %lld\n",i,c);    }    return 0;}


0 0