題意:給定兩個數p,l,求所有x,使p%x==l。
思路:注意l>x。
#include <bits/stdc++.h>
using namespace std;
int ans[10100];
int main(void)
{
int T, cas=1;
scanf("%d", &T);
while (T--)
{
int p, l, num = 0;
scanf("%d %d", &p, &l);
int m = p-l;
if (l>=m)
{
printf("Case %d: impossible\n",cas++);
continue;
}
printf("Case %d: ",cas++);
int tmp = sqrt(m);
for (int i = 1; i <= tmp; i++)
{
if (m%i==0)
{
if (m/i!=i)
ans[num++] = m/i;
ans[num++] = i;
}
}
sort(ans, ans+num);
for (int i = 0; i < num; i++)
{
if (ans[i]>l)
printf("%d%c", ans[i], i==num-1?'\n':' ');
}
}
return 0;
}