本篇code为2^64内10进制数转化为10以下进制,若需要转换为大于10的数可以加一个判断来用字母表示
一个十进制的数n,需要转换为k进制
我们可以把n看作以k为底的多项幂相加
即 n=ak(0)+bk(1)+ck(2)…xk(y)(a,b,c…为常数,a,b,c<k)
我们对k取余得到的就是a,也就是k进制下的第一位
若n对k取整 得到 n=bk(0)+ck(1)…xk(y-1),
再对k取余得到的b也就是k进制下的第二位
直到我们的n为0,我们就得到了所有幂前的常数,即我们求的答案
#include <bits/stdc++.h>
using namespace std;
int main()
{
unsigned long long n,k;
cin >> n >> k;
string ans;
while(n)
{
ans+=n%k+48;//单字符也可以直接加在后面
//十进制以上的转换在这里加一个判断
n/=k;
}
reverse(ans.begin(),ans.end());
cout << ans << endl ;
return 0;
}