A+B Problem(V)
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
1
-
描述
-
做了A+B Problem之后,Yougth感觉太简单了,于是他想让你求出两个数反转后相加的值。帮帮他吧
-
输入
- 有多组测试数据。每组包括两个数m和n,数据保证int范围,当m和n同时为0是表示输入结束。 输出
- 输出反转后相加的结果。 样例输入
-
1234 1234 125 117 0 0
样例输出
-
8642 1232
来源
-
Yougth原创
上传者
问题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=844
问题分析:考虑到倒转时候int类型不太方便,所以输入的时候直接用字符数组进行存储,便于随机读取每位上的数字。
代码:
优秀代码:#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <stdio.h> #include <string.h> #include <math.h> #include <vector> #include <queue> #include <stack> #include <map> #include <string> #include <algorithm> #include <iomanip> using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int main(int argc, char** argv) { /*freopen("file/input.txt","r",stdin); freopen("file/output.txt","w",stdout);*/ char a[11], b[11]; while (scanf("%s %s", &a, &b) != EOF && a[0] != '0' && b[0] != '0') { getchar(); int ans = 0; int c = 1; int length1 = strlen(a); int length2 = strlen(b); int i, j; for (i = 0, j = 0; i<length1 && j<length2; i++, j++) { int tmp = (a[i] - '0')*c + (b[j] - '0')*c; ans += tmp; c *= 10; } for (; i<length1; i++) { int tmp = (a[i] - '0')*c; ans += tmp; c *= 10; } for (; j<length2; j++) { int tmp = (b[j] - '0')*c; ans += tmp; c *= 10; } printf("%d\n", ans); } return 0; }
01.
#include <iostream>
02.
#include <string>
03.
using
namespace
std;
04.
int
main()
05.
{
06.
string s,t;
07.
int
x,y;
08.
while
(cin>>s>>t)
09.
{
10.
int
x=0,y=0;
11.
if
(s[0]==
'0'
&&t[0]==
'0'
)
12.
break
;
13.
for
(
int
i=s.size()-1;i>=0;i--)
14.
x=x*10+(s[i]-
'0'
);
15.
for
(
int
i=t.size()-1;i>=0;i--)
16.
y=y*10+(t[i]-
'0'
);
17.
cout<<x+y<<endl;
18.
}
19.
return
0;
20.
}
没必要a,b同时加到结果ans上,分开加就行.
ans=a+b <-------> ans+a ans+b