首页 > 试题广场 >

幸运数

[编程题]幸运数
  • 热度指数:23994 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
小明同学学习了不同的进制之后,拿起了一些数字做起了游戏。小明同学知道,在日常生活中我们最常用的是十进制数,而在计算机中,二进制数也很常用。现在对于一个数字x,小明同学定义出了两个函数 f(x) 和 g(x) 。 f(x) 表示把x这个数用十进制写出后各个数位上的数字之和。如f(123)=1+2+3=6 。 g(x) 表示把x这个数用二进制写出后各个数位上的数字之和。如 123 的二进制表示为 1111011 ,那么,g(123)=1+1+1+1+0+1+1=6 。 小明同学发现对于一些正整数 x 满足 f(x)=g(x) ,他把这种数称为幸运数,现在他想知道,大于0且小于等于n的幸运数有多少个?

数据范围:

输入描述:
每组数据输入一个数


输出描述:
每组数据输出一行,小于等于n的幸运数个数。
示例1

输入

21

输出

3
头像 17c89
发表于 2024-04-02 13:45:03
import java.util.Scanner; /** * JD9 幸运数 * @author d3y1 */ public class Main { public static void main(String[] args){ Scanner in = new 展开全文
头像 叶孤城_
发表于 2023-08-04 19:19:34
#include <stdio.h> int num2(int a) { int i=0; int sum=0; while(a>>i>=1) { int num=(a>>i); sum+=num%2; 展开全文
头像 laglangyue
发表于 2020-07-30 20:34:55
二进制数位之和与十进制数位之和相等思路很简单,从1-n穷举遍历即可 import java.util.*; public class Main{ //十进制数位之和 public static int f(int n){ int cnt=0; whil 展开全文