#给牛客的问题反馈和建议#
高精度整数加法这个题目是不是有问题?我自己手动输入好几组数据都算出来是对的,为什么一提交就算出奇怪的数字
高精度整数加法这个题目是不是有问题?我自己手动输入好几组数据都算出来是对的,为什么一提交就算出奇怪的数字
全部评论
代码
#include<stdio.h>
#include<string.h>
int main()
{
char num1[10000];
while(gets(num1))
{
char num2[10000];
char tmp[10000];
gets(num2);
int len1=strlen(num1)>strlen(num2)?strlen(num1):strlen(num2);
int len2=strlen(num1)>strlen(num2)?strlen(num2):strlen(num1);
int stack[10000]={0};int jinwei=0;int i,j,k;
int len;
int cot=0;
if(len1==len2&&num1[0]-'0'+num2[0]-'0'>=10)
{
len=len1;
}
else
{
len=len1-1;
}
if(strlen(num1)<strlen(num2))
{
strcpy(tmp,num1);
strcpy(num1,num2);
strcpy(num2,tmp);
}
j=len+1;k=len2;
len2--;
for(i=len1-1;i>=0;i--)
{
cot++;
if(jinwei&&len2!=-1)
{
stack[len--]=(num1[i]-'0')+(num2[len2--]-'0')+1;
jinwei=0;
}
else{
stack[len--]=(num1[i]-'0')+(num2[len2--]-'0');
}
if(stack[len+1]>=10)
{
jinwei=1;
stack[len+1]%=10;
}
if(jinwei&&len2==-1)
{
stack[i]++;
}
if(len2<0&&cot<len1)
{
for(k=i-1;k>=0;k--)
{
stack[len--]=num1[k]-'0';
}
break;
}
}
for(int u=0;u<=j-1;u++)
{
stack[u]+='0';
printf("%c",stack[u]);
}
printf("\n");
memset(num2,0,10000);
memset(num1,0,10000);
memset(tmp,0,10000);
memset(stack,0,10000);
}
return 0;
}
相关推荐