利用map提高运行速度和降低空间使用
#include <iostream>
#include<bits/stdc++.h>
#include<algorithm>
using namespace std;
int main()
{
int q;
cin>>q;
for(int i=0;i<q;i++)
{
long long a;int b;
cin>>a>>b;
map<long long,int>mp;
int k=2;
while(a!=1)
{
if(a%k==0)
{
if(mp.count(k))//判断是否已存在索引值
{
mp[k]++;
}
else
{
mp.insert(pair<long long,int>(k,1));
}
a/=k;
}
else
k++;
}
long long val=1;
for(map<long long ,int>::iterator it=mp.begin();it!=mp.end();it++)//遍历
{
if(it->second>=b)
{
val*=pow(it->first,it->second);//求指数
}
}
mp.clear();
cout<<val<<endl;
}
return 0;
}
望指正!!!