这个题一开始我求了k的所有质因子和其指数的值
用dfs求得所有因子但是超时了…
百度一下暴力…
好了记住以后这种破玩意就是暴力…
mdzz
#include<iostream>
#include<cstdio>
#include<memory.h>
#include<algorithm>
#include<iomanip>
#include<map>
using namespace std;
long long yinshu[100001];
int main()
{
int T;
cin>>T;
int u=0;
while(T--)
{
memset(yinshu,0,sizeof(yinshu));
long long yiyi=0;
long long n,m;
scanf("%lld%lld",&n,&m);
long long k=n-m;
if(k<=0)
{
printf("Case %d:",++u);
printf(" impossible");
printf("\n");
continue;
}
long long yyi=0;
// yinshu[++yyi]=1;
// yinshu[++yyi]=k;
for(long long a=1;a*a<=k;a++)
{
if(k%a==0)
{
if(a*a==k)
{
yinshu[++yyi]=a;
continue;
}
yinshu[++yyi]=a;
yinshu[++yyi]=k/a;//这里之所以不能预先处理是因为当k为0的时候回加进去两个1....
}
}
sort(yinshu+1,yinshu+1+yyi);
printf("Case %d:",++u);
long long tt=0;
for(long long a=1;a<=yyi;a++)
{
if(yinshu[a]>m)
{
printf(" %lld",yinshu[a]);
tt=1;
}
}
if(tt==0)
{
printf(" impossible");
}
printf("\n");
}
return 0;
}