我的代码非常简单明了。我虽然提交了“错误答案”。我不知道为什么会这样!这是代码......
#include<iostream>
#include<string>
using namespace std;
void sum(string num)
{
int i,len=num.length();
int j=len-1;
int carry=0;
string answer;
int s=0;
for(i=0,j;i<len;i++,j--)
{
s = (num[i]-'0')+(num[j]-'0')+carry;
if (s>10&&j!=0)
{
carry = s/10;
s = s%10;
}
else if (s>10&&j==0)
{
carry=s/10; s=s%10; answer+=s+'0';answer+=carry+'0'; break;
}
answer+=s+'0';
}
int sz=answer.size();for(int j=sz-1;j>=0;j--) cout<<answer[j];
}
int main(int argc,char **argv)
{
int n;cin>>n;
for(int i=0;i<n;i++)
{
string no;cin>>no;
sum(no);cout<<endl;
}
}
答案 0 :(得分:0)
我没有分析您的代码,但这里有一些关于SPOJ的提示:
答案 1 :(得分:0)
#include<stdio.h>
#include<math.h>
int reverse(long long int n);
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
long long int m,n;
scanf("%lld %lld",&m,&n);
m = reverse(m) + reverse(n);
n = reverse(m);
printf("%lld\n",n);
}
return 0;
}
int reverse(long long int n)
{
long long int i=0,y=0,x=n;
while(x)
{
y++;
x = x/10;
}
while(y)
{
i = i + (n%10)*pow(10,y-1);
n = n/10;
y--;
}
return i;
}
此代码被接受