链接:
https://www.nowcoder.com/acm/contest/97/B
来源:牛客网
来源:牛客网
奇怪的加法
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
zhrt是数学大佬,但有一天一道奇怪的数学题把他难住了:题目要求计算两个十进制数相加后的结果,但在本题中是不需要进位的!
现在zhrt弯下他的小蛮腰向你请教,你能帮帮他吗?
现在zhrt弯下他的小蛮腰向你请教,你能帮帮他吗?
输入描述:
输入有多组(组数不超过1000),每组占一行,每行有2个正整数A和B。(A,B<=1e9)
输出描述:
每组输出占一行,输出题目中A和B相加的结果。
示例1
输入
123 321 999 1 99 11
输出
444 990 0
#include<iostream>
#include<vector>
#include<map>
#include<queue>
#include<stack>
using
namespace
std;
int
main(){
int
a,b,sum=0;
while
(cin>>a>>b){
vector<
int
> t;
while
(a||b){
t.push_back((a+b)%10);
a/=10;
b/=10;
}
int
i=t.size()-1;
while
(t[i]==0&&i>0)i--;
for
(;i>=0;i--){
cout<<t[i];
}
cout<<endl;
}
return
0;
}
#include <iostream>
#include <string.h>
#include <cstdio>
#include <bits/stdc++.h>
using
namespace
std;
int
main(){
char
a[15],b[15],c[15];
char
d;
while
(~
scanf
(
"%c"
,&d)){
int
f=1,n=0;
memset
(a,0,
sizeof
(a));
memset
(b,0,
sizeof
(b));
memset
(c,0,
sizeof
(c));
scanf
(
"%s"
,a);
for
(
int
i=
strlen
(a); i>0; i--){
a[i]=a[i-1];
}
a[0]=d;
cin>>b;
getchar
();
int
lena=
strlen
(a),lenb=
strlen
(b);
if
(lena>=lenb){
int
dis=lena-lenb;
for
(
int
i=lenb-1; i>=0; i--){
a[i+dis]=a[i+dis]+b[i]-
'0'
;
if
(a[i+dis]>
'9'
) a[i+dis]-=10;
}
for
(
int
i=0; i<lena; i++){
if
(a[i]==
'0'
&& f) n++;
else
f=0;
}
for
(
int
i=n; i<lena; i++)
printf
(
"%c"
,a[i]);
if
(n==lena)
printf
(
"0"
);
}
else
{
if
(lenb>=lena){
int
dis=lenb-lena;
for
(
int
i=lena-1; i>=0; i--){
b[i+dis]=b[i+dis]+a[i]-
'0'
;
if
(b[i+dis]>
'9'
) b[i+dis]-=10;
}
for
(
int
i=0; i<lenb; i++){
if
(a[i]==
'0'
&& f) n++;
else
f=0;
}
for
(
int
i=n; i<lenb; i++)
printf
(
"%c"
,b[i]);
if
(n==lenb)
printf
(
"0"
);
}
}
printf
(
"\n"
);
}
return
0;
}
#include<cstdio>
#include<cstring>
int
main()
{
char
a[20],b[20];
int
s[20];
while
(
scanf
(
"%s%s"
,a,b)!=-1)
{
int
alen=
strlen
(a),blen=
strlen
(b);
int
cnt=0;
alen--;blen--;
while
(alen>=0&&blen>=0)
s[cnt++]=((a[alen--]-
'0'
)+(b[blen--]-
'0'
))%10;
while
(alen>=0) s[cnt++]=a[alen--]-
'0'
;
while
(blen>=0) s[cnt++]=b[blen--]-
'0'
;
int
flag=0;
for
(
int
i=cnt-1;i>=0;i--)
{
if
(!flag&&!s[i])
continue
;
else
{
printf
(
"%d"
,s[i]);flag=1;}
}
if
(!flag)
printf
(
"0"
);
printf
(
"\n"
);
}
return
0;
}
#include <set>
#include <cmath>
#include <queue>
#include <stack>
#include <vector>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <functional>
using
namespace
std;
typedef
long
long
LL;
typedef
long
long
ll;
int
main(){
int
a,b,c;
while
(
scanf
(
"%d%d"
,&a,&b)!=EOF){
int
c = 0;
int
t = 1;
do
{
c += t*((a%10+b%10)%10);
a/=10;
b/=10;
t*=10;
}
while
(!(a==0&&b==0));
printf
(
"%d\n"
,c);
}
}
#include <bits/stdc++.h>
using
namespace
std;
int
main()
{
int
a, b;
while
(cin >> a >> b)
{
int
ans = 0, t = 1;
for
(; a || b; a /= 10, b /= 10, t *= 10)
ans += ((a % 10 + b % 10) % 10) * t;
cout << ans << endl;
}
}
#include <bits/stdc++.h>
using
namespace
std;
int
s, a, b;
int
main(){
while
(~
scanf
(
"%d %d"
, &a, &b)){
int
s = 0;
int
p = 1;
while
(a > 0 || b > 0){
s = (a % 10 + b % 10) % 10 * p + s;
p *= 10;
a /= 10;
b /= 10;
}
printf
(
"%d\n"
, s);
}
return
0;
}
#include <bits/stdc++.h>
using
namespace
std;
int
main(){
int
a,b,ans;
while
(cin>>a>>b){
ans=0;
for
(
int
i=1;;i*=10){
int
aa=a%10,bb=b%10;
a/=10;b/=10;
ans=(aa+bb)%10*i+ans;
if
(a<=0&&b<=0)
break
;
}
cout<<ans<<endl;
}
}