AcWing 5416. 因子化简
原题链接
简单
作者:
cwn
,
2024-01-10 15:03:30
,
所有人可见
,
阅读 232
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
typedef long long ll;
ll n;
ll x;
int q,k;
ll ans = 1;
ll qmi(ll a,ll b)
{
ll res = 1;
while(b)
{
if(b & 1) res = res * a;
a = a * (ll)a;
b = b >> 1;
}
return res;
}
void divide(ll x)
{
for(ll i=2;i<=x/i;i++)
{
if(x%i == 0)
{
ll res = 0;
while(x%i == 0)
{
x /= i;
res++;
}
// cout<<i<<" "<<res<<endl;
if(res >= k) ans *= (ll)qmi(i,res);
// cout<<i<<" "<<res<<endl;
// cout<<(ll)i*i<<endl;
}
}
// if(x>1)
// {
// cout<<x<<" "<<"1"<<endl;
// }
cout<<ans<<endl;
}
int main()
{
cin>>q;
while(q--)
{
ans = 1;
cin>>n>>k;
divide(n);
}
return 0;
}