首页 > ACM题库 > HDU-杭电 > HDU 4554-叛逆的小明[解题报告]HOJ
2015
07-25

HDU 4554-叛逆的小明[解题报告]HOJ

叛逆的小明

问题描述 :

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

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

输入:

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

输出:

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

样例输入:

3
20 6
7 7
-100 -140

样例输出:

38 24
7 7
-19 -23

金山西居比赛的第一题,算是水题吧~

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<cstdlib>
using namespace std;
int numa[11],numb[11];
int main()
{
    int T,a,b;
    scanf("%d",&T);
    while(T--)
    {
	scanf("%d%d",&a,&b);
	int x=(a+b)/2;
	int y=a-x;
	int coua=0,coub=0;
	int ita=abs(x);
	int itb=abs(y);
	while(ita)
	{
	    numa[coua++]=ita%10;
	    ita/=10;
	}
	while(itb)
	{
	    numb[coub++]=itb%10;
	    itb/=10;
	}
	int xx=0,yy=0;
	for(int i=0;i<coua;i++)
	    xx=xx*10+numa[i];
	for(int i=0;i<coub;i++)
	    yy=yy*10+numb[i];
	if(x<0)
	    xx=-xx;
	if(y<0)
	    yy=-yy;
	printf("%d %d\n",xx+yy,xx-yy);
    }

    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

参考:http://blog.csdn.net/z309241990/article/details/8948725