hdu 5610 Baby Ming and Weight lifting

时间:2023-03-08 16:28:21
Problem Description
Baby Ming is fond of weight lifting. He has a barbell pole(the weight of which can be ignored) and two different kinds of barbell disks(the weight of which are respectively a and b), the amount of each one being infinite.
Baby Ming prepare to use this two kinds of barbell disks to make up a new one weighted C(the barbell must be balanced), he want to know how to do it.
hdu 5610 Baby Ming and Weight lifting
Input
In the first line contains a single positive integer T, indicating number of test case.
For each test case:
There are three positive integer a,b, and C.
1≤T≤1000,0<a,b,C≤1000,a≠b
Output
For each test case, if the barbell weighted C can’t be made up, print Impossible.
Otherwise, print two numbers to indicating the numbers of a and b barbell disks are needed. (If there are more than one answer, print the answer with minimum a+b)
Sample Input
2
1 2 6
1 4 5
Sample Output
2 2
Impossible
Source

直接暴力枚举

AC代码:

 #pragma comment(linker, "/STACK:1024000000,1024000000")
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<math.h>
#include<algorithm>
#include<queue>
#include<set>
#include<bitset>
#include<map>
#include<vector>
#include<stdlib.h>
using namespace std;
#define ll long long
#define eps 1e-10
#define MOD 1000000007
#define N 1000000
#define inf 1e12
int a,b,c;
int main()
{
int t;
scanf("%d",&t);
while(t--){
scanf("%d%d%d",&a,&b,&c);
if(c&){
printf("Impossible\n");
continue;
}
int half = c/; int ans = ;
int ans1,ans2;
for(int i=;i<=;i++){
for(int j=;j<=;j++){
int cnt = i*a + j*b;
if(cnt==half){
if(ans>i+j){
ans=min(ans,i+j);
ans1=i,ans2=j;
}
}
}
}
if(ans==){
printf("Impossible\n");
continue;
}
printf("%d %d\n",ans1*,ans2*);
}
return ;
}