1.题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=2100
2.说明:
两个大数相加的另类题目。
3.参考代码:
#include <stdio.h> #include <string.h> int main() { char str1[1000],str2[1000]; int a[1000],b[1000],c[2000]; int i,j,k,flag; char ch; int l1,l2,maxlen; while(~scanf("%s %s",str1,str2)) { memset(a,sizeof(a)); ///初始化 memset(b,sizeof(b)); memset(c,sizeof(c)); l1=strlen(str1); l2=strlen(str2); maxlen=l1>l2?l1:l2; ///取最大的长度 flag=0; k=0; for(i=l1-1;i>=0;i--) ///记得逆序 a[k++]=str1[i]-65; k=0; for(i=l2-1;i>=0;i--) ///记得逆序 b[k++]=str2[i]-65; for(i=0;i<maxlen;i++) { c[i]+=(a[i]+b[i]); ///相加 if(c[i]>25) ///进位思想 { c[i+1]++; c[i]%=26; } } i=2000; while(i--) { if(c[i]) break; } for(;i>=0;i--) { for(j=0;j<=25;j++) { if(c[i]==j) { flag=1; ch=j+65; printf("%c",ch); } } } if(flag==0) ///如果2个全是A,则结果为一个A printf("A"); printf("\n"); } return 0; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。