hdu 2100 LoveKey

Posted unknownname

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu 2100 LoveKey相关的知识,希望对你有一定的参考价值。

题目链接: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的主要内容,如果未能解决你的问题,请参考以下文章

(string 高精度) Lovekey hdu 2100

hdu 2120

HDU 3371 Connect the Cities(prim算法)

有趣的新手练习题

使用 LINQ Select 和 Lambda 避免 2100 rpc 限制

ValueError:无法将字符串转换为浮点数:'2100 - 2850'