天天看點

一的個數(PAT)

1.題目描述

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

2.輸入描述:

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

其中n為十進制整數,r為目标進制。

3.輸出描述:

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

4.輸入例子:

1 2
123 16
           

5.輸出例子:

1
0
           

6.解題思路:

十進制轉其他進制的方法是最簡單的,隻需要不斷取餘數并倒序輸出即可,而該題就更簡單了,題目隻要求計算1的個數,那麼我們隻需要取餘判斷是否為1并計數1的個數即可。

7.源代碼:

#include<stdio.h>
int main()
{
	int n,r;
	while(scanf("%d %d",&n,&r)!=-1)
	{
		int count=0;
		while(n)
		{
			if(n%r==1)
				count++;
			n=n/r;
		}
		printf("%d\n",count);
	}
	return 0;
}
           

繼續閱讀