首页 > 代码库 > Integer Inquiry UVA 424
Integer Inquiry UVA 424
#include <stdio.h> #include <string.h> #define MAXN 100+5 #define MAXL 100+5 char addend[MAXN][MAXL];//保存加数 char ans[MAXL];//保存结果 int len[MAXN];//保存每个加数的长度 int main(){ int cnt=0;//加数的个数 int max=0;//最长的加数的长度 int i,k,j=MAXL-1,sum,carry; //freopen("data","r",stdin); while(scanf("%s",addend[cnt])&&addend[cnt][0]!='0'){ len[cnt]=strlen(addend[cnt]); max=max>len[cnt]?max:len[cnt]; cnt++; } ans[j--]='\0'; carry=0; for(i=0;i<max;i++){//从最低位开始对每个加数的对应位相加 sum=carry; for(k=0;k<cnt;k++) if(len[k]-i>0)//保证所加位在该加数的长度内 sum+=addend[k][len[k]-i-1]-'0'; ans[j--]=sum%10+'0';//确定结果的对应位 carry=sum/10; } while(carry){//将最后的进位,注意也许并非一位数,依次放入结果中 ans[j--]=carry%10+'0'; carry/=10; } printf("%s\n",ans+j+1); return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。