题目:
题解:
很有意思啊
简单来说就是先把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);
}