我能说这道题快把我打哭了么,55555,我好想口吐芬芳,5555
真的好想,
这道题我之前做过杭电上的简单版本,当时觉得自己会了,知道我拿到这道题,我又开始疯狂wa,上来就觉得有点懵,
整理一下思路:
先将这个verylong的字符串转换成一个一个数字,sum【】代表个位,十位,百位。。。的竖式加法的值,对吧很牛皮哦
然后就是判断是否大于等于10,如果大于等于10就要进位,然后然后就要找到第一个是0的数,从后往前找,找到就记下来,在倒着输出sum数组就行了!
康康代码吧
#include<stdio.h>
#include<string.h>
char str[120];
int sum[110];
void switch_num()
{
int i,j,n;
n=strlen(str)-1;
for(int j=0,i=n;i>=0;i--,j++)
{
sum[j]=sum[j]+str[i]-'0';
}
}
int main()
{
int i,j,num;
memset(sum,0,sizeof(sum));
while(scanf("%s",str)&&strcmp(str,"0")!=0)
{
switch_num();
}
for(int i=0;i<110;i++)
{
if(sum[i]>9)
{
num=sum[i]/10;
sum[i]=sum[i]%10;
sum[i+1]=sum[i+1]+num;
}
}
for(i=105;sum[i]==0;i--);//康康清楚我这个是什么意思
for(j=i;j>=0;j--)
printf("%d",sum[j]);
printf("\n");
return 0;
}
代码大部分借鉴了有一个大佬的博客,我也想自己想出来,可是可是我太菜了,我只能先学习别人,555太难了
大佬写的