//51Nod 1922 乘法
#include<bits/stdc++.h>
using namespace std;
int Atoi(string s,int n){//n进制转10进制
int ans=0;
for(int i=0;i<s.size();i++){
char t=s[i];
if(t>='0'&&t<='9')ans=ans*n+t-'0';
else ans=ans*n+t-'a'+10;
}
return ans;
}
int xunzhao(string a,string b,string c){
int M=-1;
for(int i=0;i<a.size();i++){
if(a[i]-'0'>M){
M=a[i]-'0';
}
}
for(int i=0;i<b.size();i++){
if(b[i]-'0'>M){
M=b[i]-'0';
}
}
for(int i=0;i<c.size();i++){
if(c[i]-'0'>M){
M=c[i]-'0';
}
}
return M;
}
int main(){
string a,b,c;
cin>>a>>b>>c;
bool flag=false;
int k;
int Max=xunzhao(a,b,c);
for(int i=Max+1;i<=16;i++){
int x=Atoi(a,i);
int y=Atoi(b,i);
int z=Atoi(c,i);
if(x*y==z){
k=i;
flag=true;
break;
}
}
if(flag)cout<<k<<endl;
else cout<<"0"<<endl;
return 0;
}
最重要的函数
n进制转为十进制
int Atoi(string s,int n){//n进制转10进制
int ans=0;
for(int i=0;i<s.size();i++){
char t=s[i];
if(t>='0'&&t<='9')ans=ans*n+t-'0';
else ans=ans*n+t-'a'+10;
}
return ans;
}
十进制转为n进制
2130 进制转换
1.使用C++自带函数
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,b;
cin>>n>>b;
char str[100];
_itoa(n,str,b);//b为进制
cout<<str<<endl;
return 0;
}
2.自己写函数
注意字符串要反转
#include<bits/stdc++.h>
using namespace std;
string itoA(int num,int radix){
string ans="";
do{
int t=num%radix;
if(t>=0&&t<=9) ans+=t+'0';
else ans+=t-10+'A';
num/=radix;
}while(num!=0);
reverse(ans.begin(),ans.end());//字符串反转
return ans;
}
int main(){
int n,b;
cin>>n>>b;
string str;
str=itoA(n,b);
cout<<str<<endl;
return 0;
}