码迷,mamicode.com
首页 > 其他好文 > 详细

[Codeforces Round #680] C. Division

时间:2020-11-04 19:08:12      阅读:22      评论:0      收藏:0      [点我收藏+]

标签:span   ace   clu   sqrt   https   tmp   否则   不能   pac   

Codeforces Round #680

C. Division


首先判断pi能否整除qi,不能这答案就是pi,否则,将\(q_i\)分解质因数,将qi的每个因子从pi中剔除成不能被\(q_i\)整除的数,pi剔除完后就是\(x_i\),且\(x_i\)不能被\(q_i\)。记录个最大的\(x_i\)

举例说明 \(p_i=36\)\(q_i=12\)\(p_i=2 \times2 \times3 \times3\) , \(q_i=2 \times2 \times3\),将qi的每个因子 \(2\) ,\(2\), \(3\)从pi中剔除成为不能被\(q_i\)整除,即是每个\(x_i\),记录下最大的\(x_i\)

#include <iostream>
#include <cmath>
#include <cstring>
#include <vector>
using namespace std;
typedef long long ll;
const int N=1e9;
int t,isprime[100000];
ll p,q;
vector <ll> v;
vector <pair<ll,ll> >z;
pair<ll,ll>tmp;
void sieve(){
    for(int i=0;i<=sqrt(N);i++)
        isprime[i]=true;
    isprime[0]=isprime[1]=false;
    for(int i=2;i<=sqrt(N);i++){
        if(isprime[i]){
            v.push_back(i);
            for(int j=i+i;j<=sqrt(N);j+=i){
                isprime[j]=false;
            }
        }
    }
}
int main(){
    cin>>t;
    sieve();
    while(t--){
        cin>>p>>q;
        ll go=q;
        z.clear();
        for(int i=0;i<v.size();i++){
            int ok=0;
            while(q%v[i]==0){
                ok++;
                q/=v[i];
            }
            if(ok){
                z.push_back({v[i],ok});
            }
        }  
        if(q!=1){
            z.push_back({q,1});
        }
        if(p%go!=0){
            cout<<p<<endl;
        }else{
            ll ans=0;
            for(int i=0;i<z.size();i++){
                //cout<<"z="<<z[i]<<" "<<p<<endl;
                tmp=z[i];
                ll lin=p,zz=tmp.first,cnt=tmp.second-1;
                while(lin%zz==0){
                    lin/=zz;
                }
                while(cnt--){
                    lin*=zz;
                }
                ans=max(ans,lin);
            }
            cout<<ans<<endl;
        }
    }
}

[Codeforces Round #680] C. Division

标签:span   ace   clu   sqrt   https   tmp   否则   不能   pac   

原文地址:https://www.cnblogs.com/kksk/p/13925280.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!