题目描述
不带进位。。脑抽写了个带进位的
不带进位样例
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
char num1[105],num2[105],ans[105];
int e16(char x){
if(x>='0'&&x<='9')
return x-'0';
else
return 10+x-'A';
}
char r16(int x){
if(x>=0&&x<10)
return x+'0';
else
return 'A'+x-10;
}
int main(){
string n1,n2;
while(cin>>n1>>n2){
reverse(n1.begin(),n1.end());
reverse(n2.begin(),n2.end());
//cout<<n1<<" "<<n2<<endl;
int len=min(n1.length(),n2.length()),len2=max(n1.length(),n2.length());
//char jin='0';
int i;
for(i=0;i<len;i++){
ans[i]=r16((e16(n1[i])+e16(n2[i]))%16);
//cout<<ans[i]<<endl;
//jin=r16((e16(n1[i])+e16(n2[i]))/16);
//i++;
}
if(i<n1.length())
while(i<n1.length()){
//cout<<"<1"<<endl;
ans[i]=r16((e16(n1[i]))%16);
//jin=r16((e16(n1[i]))/16);
i++;
}
else
while(i<n2.length()){
//cout<<"<2"<<endl;
ans[i]=r16((e16(n2[i]))%16);
//jin=r16((e16(n2[i])+e16(jin))/16);
i++;
}
//cout<<len2<<endl;
for(int j=len2-1;j>=0;j--){
printf("%c",ans[j]);
}
printf("\n");
}
return 0;
}
算法2
(带进位,最后一位没写进位)
C++ 代码
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
char num1[105],num2[105],ans[105];
int e16(char x){
if(x>='0'&&x<='9')
return x-'0';
else
return 10+x-'A';
}
char r16(int x){
if(x>=0&&x<10)
return x+'0';
else
return 'A'+x-10;
}
int main(){
string n1,n2;
while(cin>>n1>>n2){
reverse(n1.begin(),n1.end());
reverse(n2.begin(),n2.end());
//cout<<n1<<" "<<n2<<endl;
int len=min(n1.length(),n2.length()),len2=max(n1.length(),n2.length());
char jin='0';
int i;
for(i=0;i<len;i++){
ans[i]=r16((e16(n1[i])+e16(n2[i])+e16(jin))%16);
//cout<<ans[i]<<endl;
jin=r16((e16(n1[i])+e16(n2[i])+e16(jin))/16);
//i++;
}
if(i<n1.length())
while(i<n1.length()){
//cout<<"<1"<<endl;
ans[i]=r16((e16(n1[i])+e16(jin))%16);
jin=r16((e16(n1[i])+e16(jin))/16);
i++;
}
else
while(i<n2.length()){
//cout<<"<2"<<endl;
ans[i]=r16((e16(n2[i])+e16(jin))%16);
jin=r16((e16(n2[i])+e16(jin))/16);
i++;
}
//cout<<len2<<endl;
for(int j=len2-1;j>=0;j--){
printf("%c",ans[j]);
}
printf("\n");
}
return 0;
}