首先,把十进制n转二进制是a[i]=n%2; n/=2;
把十进制n转八进制是a[i]=n%8; n/=8;
把十进制n转十六进制是a[i]=n%16; n/=16;
所以把十进制n转p进制是a[i]=n%p; n/=p;
具体代码如下:
#include<bits/stdc++.h>
using namespace std;
int n,ans;//ans储存二进制位数,方便输出
vector<int> a;//因为n的范围是1e9,所以我定了一个动态数组
int main(){
double m;
cin>>m;
n=m;
int t;
cin>>t;
while(n>0){
ans++;//存位数
a.push_back(n%t);//如数组
n/=t;}
if(t==16)
{
cout<<"0x";
}
if(t==8)
{
cout<<"0";
}
for(int i=ans-1;i>=0;i--)
{
if(a[i]<10)
{
cout<<a[i];
}
else
{
cout<<char(a[i]+55);
}
}//倒序输出
return 0;
}