您的位置:首页 > 其它

hdu2100Lovekey

2013-08-03 21:16 127 查看
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,0,sizeof(a));   ///初始化
memset(b,0,sizeof(b));
memset(c,0,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;
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  大数