1つの#include <ビット/ STDC ++ H.>
2 使用して 名前空間STD;
3 ロング ロングN-、K、ANS;
4 int型のmain()
5。 {
6。 スタック< INT > S;
7 scanfの(" %のD%D "、&K、 &N-);
8 ながら(N-)
9。 {
10 S.push(&N- 1); // N-1&はビット単位のバイナリコードであり、最下位ビットに加えて、格納されたバイナリコードに対応するように、他のビットは0であるので、nはいずれか1&1であり(nが1であるLSB nは奇数である)のいずれか0(nが偶数である場合LSB nは0)。それは2%N-と同等であることが人気のある
11。 N - >> = 1 ; //N >> = 1、右1ビット、最上位ビットが0のバイナリを補完N変数の各ビットの一次ことを意味し、その結果を再びNにコピーされます。Nはに2分割さ
12れている } // この部分はバイナリnに変換されるように
13である 一方で(!S.empty())
14 {
15 ANS S.top = +()* POW(K、S.サイズ() - 1); //はK進小数で10に変換する
16 S.pop();
17 }
18である のprintf(" %のD " 、ANS);
19。 リターン 0 ;
20です }