#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int t,m,n,s,k=0,i,j,a,b;
cin>>t;
while(t--)
{
cin>>m>>b;s=1000000000;
for(i=2;i<=m;i++)
{
j=0;a=0;n=b;
while(!(m%i))
j++,m/=i;//多注意单个素数统计哦,不能相乘
while(n/i&&j!=0)
a+=n/i,n/=i;
if(a/j<s&&j!=0) s=a/j;
}
if(s) cout<<"Case "<<++k<<':'<<endl<<s<<endl;
else cout<<"Case "<<++k<<':'<<endl<<"Impossible to divide"<<endl;
}
return 0;
}
using namespace std;
int main(int argc, char *argv[])
{
int t,m,n,s,k=0,i,j,a,b;
cin>>t;
while(t--)
{
cin>>m>>b;s=1000000000;
for(i=2;i<=m;i++)
{
j=0;a=0;n=b;
while(!(m%i))
j++,m/=i;//多注意单个素数统计哦,不能相乘
while(n/i&&j!=0)
a+=n/i,n/=i;
if(a/j<s&&j!=0) s=a/j;
}
if(s) cout<<"Case "<<++k<<':'<<endl<<s<<endl;
else cout<<"Case "<<++k<<':'<<endl<<"Impossible to divide"<<endl;
}
return 0;
}
本文展示了一个使用C++编写的程序,该程序能够接受一对整数输入,并通过素数分解来找出使得b^a能被m整除的最高效率的比例s。程序首先读取测试用例的数量,然后对于每个测试用例读取两个整数m和b,接着进行素数分解并计算比例。
1129

被折叠的 条评论
为什么被折叠?



