一的个数(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;
}
全部评论

相关推荐

头像
不愿透露姓名的神秘牛友
04-29 12:10
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务