题目:http://www.lightoj.com/volume_showproblem.php?problem=1014
题意:有C个人和P个食物(不知道C),每人吃Q个食物还剩余L个食物(Q>L),从小到大输出所有Q的取值
思路:可以知道总共吃了P - L个食物,如果P - L < L,这肯定不可能,否则,从小到大输出P - L的所有大于L的因子
总结:最近变的好傻逼啊。。。这么个水题由于粗心wa了几次。。。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
int cas;
int main()
{
int t, p, l;
scanf("%d", &t);
while(t--)
{
scanf("%d%d", &p, &l);
int m = p - l;
if(m <= l) printf("Case %d: impossible\n", ++cas);
else
{
int res[10010], k = 0;
int tmp = sqrt(m);
for(int i = 1; i <= tmp; i++)
if(m % i == 0)
{
if(m / i != i) res[k++] = i, res[k++] = m / i; //之前if条件写的是i != tmp,好傻逼。。。
else res[k++] = i;
}
sort(res, res + k);
printf("Case %d: ", ++cas);
for(int i = 0; i < k; i++)
if(res[i] > l) printf("%d%c", res[i], i == k-1 ? '\n' : ' ');
}
}
return 0;
}