进制转换(低精度)
并不是某道题其实只是心血来潮随便写的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; }