zoukankan      html  css  js  c++  java
  • 牛客网在线编程:幸运数

    题目:

    小明同学学习了不同的进制之后,拿起了一些数字做起了游戏。小明同学知道,在日常生活中我们最常用的是十进制数,而在计算机中,二进制数也很常用。
    现在对于一个数字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),他把这种数称为幸运数,现在他想知道,小于等于n的幸运数有多少个?
    输入描述:
    每组数据输入一个数n(n<=100000)
    输出描述:
    每组数据输出一行,小于等于n的幸运数个数。
    示例1
    输入

    21
    输出

    3
    思路:

    求十进制和二进制各位的和,使用sum+=n%10,n/=10;和sum+=n%2,n/=2;
    输入用Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();

     1 import java.util.*;
     2 public class LuckyNumber {
     3     //十进制求和
     4     public static int f(int n){
     5         int sum = 0;
     6         while(n!=0){
     7             sum += n%10;
     8             n/=10;
     9         }
    10         return sum;
    11     }
    12     //二进制求和
    13     public static int g(int n){
    14         int sum = 0;
    15         while(n!=0){
    16             sum += n%2;
    17             n/=2;
    18         }
    19         return sum;
    20     }
    21     public static void main(String[] args) {
    22         // TODO Auto-generated method stub
    23         Scanner scanner = new Scanner(System.in);
    24         while(scanner.hasNext()){
    25             int n = scanner.nextInt();
    26             int count = 0;
    27             for(int i = 1; i <= n;i++){
    28                 if(f(i)==g(i)){
    29                     count++;
    30                     //System.out.println(i);
    31                 }
    32             }
    33             System.out.println(count);
    34         }
    35     }
    36 
    37 }
  • 相关阅读:
    Spring-12-spring整合Mybatis
    Spring-11-AOP面向切面编程
    jQuery选择器之表单元素选择器
    phpsmarty分配变量
    angular
    ajax 第四步
    ajax第三步
    php+ajax+jq
    二十三种设计模式[4]
    二十三种设计模式[3]
  • 原文地址:https://www.cnblogs.com/zlz099/p/8509510.html
Copyright © 2011-2022 走看看