并不是某道题其实只是心血来潮随便写的QwQ(2333我才不会说我想发二进制说说来装B)
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int primer(int a,int b)//快速幂将N进制转换成10进制
{
int r=1,base=a;
while(b)
{
if (b&1) r*=base;
base*=base;
b>>=1;
}
return r;
}
int a[1001];
int changetoten(int m,int zj)//辗转相除将10进制转为m进制数
{
int cnt=0,ans=0;
while(m)
{
cnt++;
a[cnt]=m%10;
m/=10;
}
for (int i=1;i<=cnt;i++)
{
ans+=a[i]*primer(zj,i-1);
}
return ans;
}
int b[1001];
int jz1;
int n;
int jz;
void changetoother(int m,int zj1)
{
int cntt=0;
while (m)
{
cntt++;
b[cntt]=m%zj1;
m/=zj1;
}
for (int i=cntt;i>=1;i--)
cout<<b[i];
}
int main ()
{
cout<<"请输入待转换的数:";
cin>>n;
cout<<"请输入该数的进制:" ;
cin>>jz;
int k=changetoten(n,jz);
cout<<"请输入转换的进制:" ;
cin>>jz1;
cout<<"该数的"<<jz1<<"进制为:" ;
changetoother(k,jz1);
return 0;
}