N进制转M进制
真正自己写出来的第一个程序
处理思路:把N进制转成10进制,再由10进制转M进制(★★★)
#include<cstdio> #include<cstring> #include<iostream> using namespace std; char ch[6]={'A','B','C','D','E','F'}; char s[1000000]; int num[100000]; int cf(int x,int y) { long long ans=1; if(x==0) return 1; else for(int i=1;i<=x;++i) ans*=y; return ans; } void turndate(int p,int q) { int xx=1; while(p!=0) { num[xx]=p%q; p/=q; ++xx; } xx--; for(int j=xx;j>=1;--j) { if(num[j]>=10) cout<<ch[num[j]-10]; //技巧(★★★) else cout<<num[j]; } } int main() { int n,m; long long shi=0; cin>>n; scanf("%s",s); cin>>m; for (int j=strlen(s)-1;j>=0;--j) if(s[j]>=65) num[strlen(s)-j]=s[j]-55; else num[strlen(s)-j]=s[j]-48; for (int j=1;j<=strlen(s);++j) shi+=num[j]*cf(j-1,n); turndate(shi,m); }