杭电2100题,高手帮忙看看呀,不知为何WA。试过的答案都对啊,请帮忙找出漏洞,麻烦啦

#include<iostream>#include<string.h>usingnamespacestd;inttransform(char*p){intlen,b,s... #include<iostream>
#include<string.h>
using namespace std;
int transform(char *p)
{
int len,b,sum,i;
sum=0;
while(*p!='\0')
{ b=*p-65;
len=strlen(p);
for(i=0;i<len-1;i++)
b*=26;
sum+=b;
p++;
}
return sum;
}
int main(void)
{
char str1[210],str2[210];
int a,k,number[210],i;
_int64 sum;
while(cin>>str1>>str2)
{
sum=transform(str1)+transform(str2);
k=0;
while(sum)
{
a=sum%26;
sum/=26;
number[k++]=a+65;
}
for(i=k-1;i>=0;i--)
printf("%c",number[i]);
cout<<endl;
}
return 0;
}
展开
 我来答
qyjubriskxp
2011-03-02 · TA获得超过892个赞
知道小有建树答主
回答量:735
采纳率:0%
帮助的人:737万
展开全部
题目说每个数不超过两百位,能不超过整数上限吗,而你的transform函数返回值是int,当然会错
事实上就算像sum一样用__int64,粗略算算26^200不知道比2^64大多少,显然也存不下
正确的做法应该是直接模拟26进制的高精度计算
华芯测试
2024-09-01 广告
电学测试台是深圳市华芯测试科技有限公司的核心设备之一,它集成了高精度测量仪器与自动化控制系统,专为半导体芯片、电子元件及模块的电性能检测而设计。该测试台能够迅速、准确地完成电压、电流、电阻、电容及频率等关键参数的测试,确保产品质量符合行业标... 点击进入详情页
本回答由华芯测试提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式