如何計算出long型的任意進制中一的個數(長整型)
阿新 • • 發佈:2019-01-07
題目描述
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; }