本题链接:点击打开链接
叛逆的小明
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
3 20 6 7 7 -100 -140
Sample Output
38 24 7 7 -19 -23
Source
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;
}