进制转换核心代码:
string Zhuanh(int x,int n){
string s;
while(x){
int u=x%n;
if(x%n>9)
s.push_back(u-10+'A');
else
s.push_back(u+'0');
x/=n;
}
for(int i=0;i<s.length()/2;i++){
swap(s[i],s[s.length()-1-i]);
}
return s;
}
下面是USACO的有关练习的参考代码
[USACO1.2]回文平方数 Palindromic Squares
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
string Zhuanh(int x,int n){
string s;
while(x){
int u=x%n;
if(x%n>9)
s.push_back(u-10+'A');
else
s.push_back(u+'0');
x/=n;
}
for(int i=0;i<s.length()/2;i++){
swap(s[i],s[s.length()-1-i]);
}
return s;
}
bool ifHui(string s){
for(int i=0;i<s.length();i++){
if(s[i]!=s[s.length()-1-i])
return false;
}
return true;
}
int main(){
int n;
cin>>n;
for(int i=1;i<=300;i++){
if(ifHui(Zhuanh(i*i,n))){
cout<<Zhuanh(i,n)<<" "<<Zhuanh(i*i,n)<<endl;
}
}
}
[USACO1.2]双重回文数 Dual Palindromes
#include<iostream>
#include<algorithm>
#include<string>
#include<cstdio>
using namespace std;
string Zhuanh(long long int x,int n){
string s;
while(x){
int u=x%n;
if(x%n>9)
s.push_back(u-10+'A');
else
s.push_back(u+'0');
x/=n;
}
for(int i=0;i<s.length()/2;i++){
swap(s[i],s[s.length()-1-i]);
}
return s;
}
bool ifHui(string s){
for(int i=0;i<s.length();i++){
if(s[i]!=s[s.length()-1-i])
return false;
}
return true;
}
int main(){
int n,s,num=0;
cin>>n>>s;
for(long long int i=s+1;num<n;i++){
int jz=0;
for(int j=2;j<11;j++){
if(ifHui(Zhuanh(i,j)))
jz++;
if(jz>=2)
break;
}
if(jz>=2){
cout<<i<<endl;
num++;
}
}
}
要注意的是,此题的一些变量类型要为long long超长整型。