如何計算出long型的任意進制中一的個數(長整型)

題目描述

NowCoder總是力爭上游,凡事都要拿第一,所以他對“1”這個數情有獨鍾。愛屋及烏,他也很喜歡包含1的數,例如10、11、12……。不僅如此,他同樣喜歡任意進制中包含1的數。當然,其中包含1的個數越多他越喜歡。你能幫他統計一下某個數在特定的進制下1的個數嗎?

 

輸入描述:

輸入有多組數據,每組數據包含一個正整數n (1≤n≤2147483647)和一個正整數r (2≤r≤16)。

其中n爲十進制整數,r爲目標進制。


 

輸出描述:

對應每組輸入,輸出整數n轉換成r進制之後,其中包含多少個“1”。

 

輸入例子:

1 2
123 16

 

輸出例子:

1
0

算法實現: 

#include <stdio.h>

int main()
{
    int r,nowcoder;
    long n;
    while (scanf("%ld %d",&n,&r)!=EOF) {
        nowcoder=0;
        
        while (n) {
            if (n%r==1) {
                nowcoder++;
            }
            n=n/r;
        }
        printf("%d\n",nowcoder);
    }
    
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章