hdu 5610 Baby Ming and Weight lifting

来源:互联网 发布:windows7优化大师软件 编辑:程序博客网 时间:2024/05/20 20:01

刚回家不在状态吧。错的稀里糊涂
说一下我一开始的思路。
首先 两边相等 c必为偶数。c&1
只计算一边就可以,最后的答案别忘了乘二。
下面就是我的错误所在,把a,b比大小,直接c/b c%b/a
的得到两个答案。果断wa。思来想去觉得没问题,找了别人的答案,一开始觉得没问题啊,可是既然别人用了for就一定有道理的,举个例子,3 5 19;根据我的方法是Impossible,但是其实答案是 3 2.
想明白也不容易。

#include <iostream>#include<string>#include<algorithm>#include<stdio.h>using namespace std;int main(){    int n;    cin >> n;    while (n--) {        int a, b, c;        scanf("%d%d%d", &a, &b, &c);        if (c & 1)        {            printf("Impossible\n");        } else        {            c /= 2;            int aa = max(a, b);            int bb = min(a, b);            int ansa, ansb;            bool flag = 0;            for (int i = c / aa; i >= 0; --i)            {                if (i * aa == c || (c - i * aa) % bb == 0)                {                    ansa = i;                    ansb = (c - i * aa) / bb;                    flag = 1;                    break;                }            }            if (flag)            {                if (a > b)                {                    printf("%d %d\n", 2*ansa, 2*ansb);                } else                {                    printf("%d %d\n", 2*ansb, 2*ansa);                }            } else            {                printf("Impossible\n");            }        }    }    return 0;}
0 0
原创粉丝点击