我看了白色纯度的博客,似懂非懂的,自己列出数组,才明白。废话不多数 ,附上数组(在最下面)
---------------------------------------------------------------------------------------------------------------------------------------------------
#include<stdio.h>
#include<math.h>
int main()
{
    int n,k,tmp,num=0;
    scanf("%d %d",&n,&k);
    for(int i=0;i<10;i++){//k的最大值1000=1111101000B,共计10位数,for循环10次;
        if(k&1){//取k的每一位判断其指数i有或者没有;
            num+=pow(n,i);
        }
        k=k>>1;
    }
    printf("%d",num);
   
    return 0;
}
---------------------------------------------------------------------------------------------------------------------------------------------------

k 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
k 二进制 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 10001 10010 10011 10100 10101
结果 1 4 5 16 17 20 21 64 65 68 69 80 81 84 85 256 257 260 261 272
4为底的冥 4^0 4^1 4^1 4^2 4^2 4^2 4^2 4^3 4^3 4^3 4^3 4^3 4^3 4^3 4^3 4^5 4^5 4^5 4^5 4^5 4^5
4^0 4^0 4^1 4^1 4^0 4^1 4^1 4^2 4^2 4^2 4^2 4^0 4^1 4^1 4^2 4^2
4^0 4^0 4^0 4^1 4^1 4^0 4^0
4^0