poj 1503 大整数高精度 加法

题目就是正整数相同长度相加
#include<stdio.h>
#include<string.h>

char last[200],now[200];

void rever(char a[],int n)
{
for(int i=0,j=n-1;i<=j;i++,j--){
char ch=a[i];
a[i]=a[j];
a[j]=ch;
}
return ;
}

int main()
{
memset(last,'\0',sizeof(last));
memset(now,'\0',sizeof(now));

scanf("%s",last);
rever(last,strlen(last));

while(scanf("%s",now)!=EOF){
if(strlen(now)==1&&now[0]=='0'){
rever(last,strlen(last));

printf("%s",last);
return 0;
}


int len=strlen(now);
rever(now,len);

int temp=0;
int pos;
for(int i=0;i<len;i++){
pos=last[i]-'0'+now[i]-'0'+temp;
temp=pos/10;
pos%=10;
last[i]=pos+'0';
}

int L=strlen(last);
for(int i=len;i<L;i++){
pos=last[i]-'0'+temp;
temp=pos/10;
pos%=10;
last[i]=pos+'0';
}
if(temp>0){
int k=strlen(last);
last[k]=temp+'0';
}


memset(now,'\0',sizeof(now));
}

return 0;
}

下面就是网上别人的精简代码

#include<cstdio>
#include<cstring>
int main()
{
int result[10000]={0};
int length=0;
char input[100];
scanf("%s",input);
while(scanf("%s",input),strcmp(input,'0'))
{
for(int i=strlen(input)-1,index=0;i>=0;i--,index++)
{
result[index]+=input[i]-'0';
result[index+1]+=result[index]/10;
result[index]=result[index]%10;
}

if(strlen(input)>=length)
length = strlen(input)+1;
}

while(result[length-1]==0)
length--;
while(length>0)
{
printf("%d",result[length-1]);
length--;
}
return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值