zoj 1205, 一道水题,但是总是WA,求解? 题目地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?p
我的代码:#include<string>#include<iostream>usingnamespacestd;intmain(){stringa,b;stringc=...
我的代码:
#include<string>
#include<iostream>
using namespace std;
int main()
{
string a,b;
string c="abcdefghij";
while(cin>>a>>b)
{
if(a.length()<b.length()){
string temp=a;
a=b;
b=temp;
}
for(int n1=a.length()-1,n2=b.length()-1;n1>=0;n1--,n2--)
{
if(a[n1]-39>'9')a[n1]=a[n1]-39;
if(b[n2]-39>'9')b[n2]=b[n2]-39;
a[n1]=char(a[n1]+(n2>=0?b[n2]-'0':0));
if(a[n1]-'0'>=20)
{
a[n1]=char(int((a[n1]-'0')%20)+'0');
if(n1)
a[n1-1]++;
else
{
a[n1]=c[int(a[n1]-'9')-1];
a='1'+a;
}
}
if(a[n1]>'9')
{
a[n1]=c[int(a[n1]-'9')-1];
}
}
cout<<a<<endl;
}
return 0 ;
} 展开
#include<string>
#include<iostream>
using namespace std;
int main()
{
string a,b;
string c="abcdefghij";
while(cin>>a>>b)
{
if(a.length()<b.length()){
string temp=a;
a=b;
b=temp;
}
for(int n1=a.length()-1,n2=b.length()-1;n1>=0;n1--,n2--)
{
if(a[n1]-39>'9')a[n1]=a[n1]-39;
if(b[n2]-39>'9')b[n2]=b[n2]-39;
a[n1]=char(a[n1]+(n2>=0?b[n2]-'0':0));
if(a[n1]-'0'>=20)
{
a[n1]=char(int((a[n1]-'0')%20)+'0');
if(n1)
a[n1-1]++;
else
{
a[n1]=c[int(a[n1]-'9')-1];
a='1'+a;
}
}
if(a[n1]>'9')
{
a[n1]=c[int(a[n1]-'9')-1];
}
}
cout<<a<<endl;
}
return 0 ;
} 展开
2011-03-25
展开全部
虽然你说这是个水题,但是你的编码显示你的水平还不至于把这种题目看作水题
我也不想看你写的代码了,只给你点建议:
1.做加法前转换到数值,某一位数值确定后再转回去,而进位用数值来保存:'0'转为0,'a'转为10,依此类推。你把'a'-'j'转换到接在'9'后面然后,每次去作加法,每次都要再去做处理,效率低,可读性也差
2.定义两个函数用于转换/逆转,而不是写得这样一团糟
再送你几个测试数据:
0, 0
1, 0
00001, 222
jjjjj, 1
jjjjj,jjjjj
还有100个j和100个j
我也不想看你写的代码了,只给你点建议:
1.做加法前转换到数值,某一位数值确定后再转回去,而进位用数值来保存:'0'转为0,'a'转为10,依此类推。你把'a'-'j'转换到接在'9'后面然后,每次去作加法,每次都要再去做处理,效率低,可读性也差
2.定义两个函数用于转换/逆转,而不是写得这样一团糟
再送你几个测试数据:
0, 0
1, 0
00001, 222
jjjjj, 1
jjjjj,jjjjj
还有100个j和100个j
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询