微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

hdu2100Lovekey

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 举报,一经查实,本站将立刻删除。

相关推荐