题目:
题解:
很有意思啊
简单来说就是先把k转化为二进制再转化为n进制
看到这个
30+31+32
就应该很眼熟了,这不是一个进制转换吗
那么为什么要先转成二进制呢?因为他们的相对大小不变啊
具体来说就是
3^0,3^1,3^0+3^1,3^2,3^0+3^2,3^1+3^2,3^0+3^1+3^2……
改成三进制表示:001,010,011,100,101,110,111……
看得出是二进制的1~7吧
能发现这个就没什么问题了
代码:
#include <queue>
#include <cstdio>
using namespace std;
int main()
{
int k,n;
scanf("%d%d",&k,&n);
long long ans=0,now;
now=1;
while (n)
{
ans+=(n%2)*now;
now*=k;
n/=2;
}
printf("%lld",ans);
}

本文介绍了一种将数值从十进制转化为特定进制的方法,通过先转化为二进制再进一步转换来简化过程。该技巧适用于算法竞赛和编程挑战中涉及进制转换的问题。
888

被折叠的 条评论
为什么被折叠?



