hdu 4554 叛逆的小明

来源:互联网 发布:淘宝优惠券手机端链接 编辑:程序博客网 时间:2024/04/30 22:12

本题链接:点击打开链接

叛逆的小明

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 1489    Accepted Submission(s): 996


Problem Description
叛逆期的小明什么都喜欢反着做,连看数字也是如此(负号除外),比如:
小明会把1234它看成4321;把-1234看成-4321;把230看成032 (032=32);把-230看成-032(-032=-32)。

现在,小明做了一些a+b和a-b的题目(a, b为整数且不含前导0),如果给你这些题目正确的答案,你能猜出小明会做得到什么答案吗?
 

Input
输入第一行为一个正整数T(T<=10000),表示小明共做了T道题。
接下来T行,每行是两个整数x,y(-1000000<=x, y<=1000000), x表示a+b的正确答案,y表示a-b的正确答案。
输入保证合法,且不需考虑a或b是小数的情况。
 

Output
输出共T行,每行输出两个整数s t,之间用一个空格分开,其中s表示小明将得到的a+b答案,t表示小明将得到的a-b答案。
 

Sample Input
320 67 7-100 -140
 

Sample Output
38 247 7-19 -23
 

Source
2013金山西山居创意游戏程序挑战赛——初赛(4)
 

Recommend
liuyiding   |   We have carefully selected several similar problems for you:  6032 6031 6030 6029 6028 

本题题意:中文题,不啰嗦。
ps:比较简单的问题,但是我以前还是花了不少时间,是我考虑的太复杂了,考虑了a,b初始值正负数的四值情况了。

解题思路:先利用解一元二次方程式的方法求出a,b数位颠倒之后的值,再求a,b的原值就行。

代码:

#include <cstdio>#include <cmath>int main(){    int T;    scanf("%d",&T);    while(T--)    {        int s1,s2;        int a1,b1,p,a=0,b=0,s,t;   //a1,b1表示颠倒之后的值,a,b为原来的值,        scanf("%d%d",&s1,&s2);        {            a1=(s1+s2)/2;         //求颠倒之后的a1的值            b1=s1-a1;             //求颠倒之后的b1的值        }        while(a1)                //求a,b的原值        {            p=a1%10;            a=10*a+p;            a1=a1/10;        }        while(b1)        {            p=b1%10;            b=10*b+p;            b1=b1/10;        }        s=a+b;        t=a-b;        printf("%d %d\n",s,t);    }    return 0;}

以前考虑复杂化的代码:


原创粉丝点击