zoukankan      html  css  js  c++  java
  • 1的数目问题

    1.题目:

    给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数。
    要求:
    写一个函数 f(N) ,返回1 到 N 之间出现的 “1”的个数。例如 f(12)  = 5。
    在32位整数范围内,满足条件的“f(N) =N”的最大的N是多少
    思路
    最初看见这个问题我感觉这个有规律的问题 肯定是存在了特殊的数字,包含着规律于是我想找到特殊数字于是我找到13
    N=13  f(N)=2+4=6;  
    N=23 f(N)=3+10=13;  
    package yunsuan;
    
    import org.junit.Test;
    
    public class find1 {
        
        public int Count(int n){
            int count = 0;
            int  n1 = 1;
            int nN = 0;
            int gN = 0;
            int hN = 0;
            if (n <= 0){
                return 0;
            }
            while (n / n1 != 0){
                nN = (n - (n / n1)*n1);
                gN =  ((n / n1) % 10);
                hN =  (n / (n1 * 10));
                if (gN == 0){
                    count += hN*n1;
                }
                else if (gN == 1){
                    count += hN*n1 + nN + 1;
                }
                else
                {
                    count += (hN + 1)*n1;
                }
                n1 *= 10;
            }
            return  count;
        }
    
        @Test
        public void fun(){
          
            int i;
            for (i = 0; i < 2147483647; i++)
            {
                if (Count(i) == i)
                {
                    System.out.println(i);
                }
            }
           
        }
    
    }

    N=33  f(N)=4+10=14;
    .......
    N=93 f(N)=10+10=20
    发现这个规律
    运行截图:
     
     
     
     
  • 相关阅读:
    连续型随机变量
    离散型随机变量
    vue1.0生命周期
    vue2.0生命周期函数
    vue2.0 vue.set()
    vue2.0 vue.extend()的拓展
    vue2.0 自定义指令详解
    vue2.0 v-model指令
    vue2.0排序应该注意的问题
    vue2.0版本指令v-if与v-show的区别
  • 原文地址:https://www.cnblogs.com/qerror404/p/4592506.html
Copyright © 2011-2022 走看看