参考题目
求逆序数的数学方法:
int getreverse(int n){
int ans=0;
while(n>0){
ans=ans*10+n%10;
n/10;
}
return ans;
}
该方法的局限:逆序数不可以过长;无法判断一个数是否是回文数。
因此可以使用string处理:
bool judge(string s){
string s1=s;
reverse(s.begin(),s.end()); //逆序数
return s1==s; //判断是否回文
}
此外,字符串还可以处理不同进制下的逆序数,回文数。通过map将A-F映射为10-15。
map<char,int>Map;
for(char i='0';i<='9';i++) Map[i]=i-'0';
for(char i='A';i<='F';i++) Map[i]=i-'A'+10;
字符串同样可以处理不同进制的加法运算:
string add(string a,string b,int n){ //a+b在n进制下的运算
string ans;
bool plus=0;
for(int i=0;i<a.size();i++){
int sum=Map[a[i]]+Map[b[i]];
if(plus){
sum++;plus=0;
}
if(sum>=n){
sum-=n;plus++;
}
if(sum<10) ans+=sum+'0';
else ans+=sum-10+'A';
}
if(plus) ans+='1';
reverse(ans.begin(),ans.end());
return ans;
}