题意:重量分别为a和 b 的杠铃片,分别有无限多个,现在要用a b两种杠铃片组合,使之达到重量c;求满足条件的a 和b 分别需要多少个.输出a+b最小的那个组合。
分析: 1.因为杠铃是对称的,所以当c为奇数时,无解;
2.需要a的最大个数为c/a,,同理需要b的个数为c/b;
3.暴力枚举;=_=
#include<cstdio>
#include<iostream>
using namespace std;
#define N 1010
int main()
{
int a,b,c,t;
scanf("%d",&t);
while(t--){
scanf("%d%d%d",&a,&b,&c);
if(c%2){
cout<<"Impossible"<<endl;
continue;
}
int x=N,y=N,flag=0;
for(int i=0;i<c/a;i++)
for(int j=0;j<=c/b;j++)
if(2*i*a+2*b*j==c&& i+j<x+y){
x=i;
y=j;
flag=1;
}
if(flag)
printf("%d %d\n",2*x,2*y);
else
printf("Impossible\n");
}
return 0;
}