51Nod 1922 乘法 2130进制转换


//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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值