HDU 5610 Baby Ming and Weight lifting(水~)

来源:互联网 发布:中国自然灾害数据库 编辑:程序博客网 时间:2024/06/04 21:06

Description
铭宝宝喜欢举重运动,他有一个杠铃杆(重量忽略),和2种类型的杠铃片(重量分别为a和b),每种杠铃片都有无限个。铭宝宝打算用这2种杠铃片组成重量为C的杠铃(杠铃必须平衡),他想让你告诉他,应该如何组合
Input
输入一个正整数T(1≤T≤1000)表示测试组数,每组测试数据输入3个正整数a, b, C(0 < a,b,C≤1000), 表示2种杠铃片的重量,以及杠铃的重量。
Output
如果不能够组成重量为C的杠铃,输出Impossible。否则输出2个数,表示需要a杠铃片的数量,和b杠铃片的数量。(如果有多种答案,输出a+b最小的方案)
Sample Input
2
1 2 6
1 4 5
Sample Output
2 2
Impossible
Solution
简单题,暴力枚举a的数量选出最小值即可
Code

#include<cstdio>#include<iostream>using namespace std;int gcd(int a,int b){    return b?gcd(b,a%b):a;}int main(){    int T,a,b,c;    scanf("%d",&T);    while(T--)    {        scanf("%d%d%d",&a,&b,&c);        if(c&1)        {            printf("Impossible\n");            continue;        }        c/=2;        int x=1111,y=1111;        for(int i=0;a*i<=c;i++)            if((c-a*i)%b==0)            {                int j=(c-a*i)/b;                if(i+j<x+y)x=i,y=j;            }        if(x==1111&&y==1111)printf("Impossible\n");        else printf("%d %d\n",2*x,2*y);    }    return 0;}
0 0
原创粉丝点击