题意:有C个人,给P个食物,每人吃Q个,剩L个。然后给你P和L(Q>L),让你求Q的可能情况,如果有多种可能,从小到大输出;如果不存在,输出impossible
就是求写出公式 遍历c求P-L的因子就出来了
用set 正好
#include <iostream>
#include <cstdio>
#include <sstream>
#include <cstring>
#include <map>
#include <set>
#include <vector>
#include <stack>
#include <queue>
#include <algorithm>
#include <cmath>
#define MOD 2018
#define LL long long
#define ULL unsigned long long
#define Pair pair<int, int>
#define mem(a, b) memset(a, b, sizeof(a))
#define _ ios_base::sync_with_stdio(0),cin.tie(0)
//freopen("1.txt", "r", stdin);
using namespace std;
const int maxn = , INF = 0x7fffffff;
set<LL> s;
int main()
{
int T, kase = ;
scanf("%d",&T);
while(T--)
{
s.clear();
LL p, l;
scanf("%lld%lld",&p,&l);
for(LL i=; i * i<=p-l; i++)
if((p-l)%i == )
{
if(i > l)
s.insert(i);
if((p-l)/i > l)
s.insert((p-l)/i);
} printf("Case %d:",++kase);
if(s.empty())
printf(" impossible");
else
for(set<LL>::iterator it = s.begin(); it!=s.end(); it++)
{
printf(" ");
printf("%lld",*it);
}
printf("\n");
} return ;
}
题意:有C个人,给P个食物,每人吃Q个,剩L个。然后给你P和L(Q>L),让你求Q的可能情况,如果有多种可能,从小到大输出;如果不存在,输出impossible