码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 2100 LoveKey

时间:2018-04-09 16:23:29      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:set   char   code   i+1   ret   字符串   fine   mem   数组   

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2100

题意:26进制加法

分析:因为给定的两个字符串长度过大,不可能将其转化为十进制相加(会溢出),所以只能采用数组存储每一位的二十六进制数,然后对位相加,逢26向高位进一。

注意:AAAAAA  A    相加输出一个A

code:

#include<stdio.h>
#include<string.h>
#define MAXN 300
char a[MAXN],b[MAXN];
int c[MAXN],d[MAXN],sum[MAXN];
int main()
{
int i,j,len1,len2,len;
while(~scanf("%s%s",a,b))
{
memset(c,0,sizeof(c));
memset(d,0,sizeof(d));

len1=strlen(a);
for(j=0,i=len1-1;i>=0;i--)
c[j++]=a[i]-‘A‘;

len2=strlen(b);
for(j=0,i=len2-1;i>=0;i--)
d[j++]=b[i]-‘A‘;

len=(len1<len2?len2:len1);
memset(sum,0,sizeof(sum));
for(i=0;i<len;i++)
sum[i]=c[i]+d[i];

for(i=0;i<len;i++)
{
if(sum[i]>=26)
{
sum[i]-=26;
sum[i+1]+=1;
}
if(sum[len-1]>=26)
len+=1;
}
for(i=len-1;i>=0&&sum[i]==0;i--);
if(i>=0)
{
for(;i>=0;i--)
printf("%c",sum[i]+‘A‘);
}
else
printf("A");
printf("\n");
}
return 0;
}

hdu 2100 LoveKey

标签:set   char   code   i+1   ret   字符串   fine   mem   数组   

原文地址:https://www.cnblogs.com/unknownname/p/8760541.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!