• 整数中1出现的次数(从1到n整数中1出现的次数)


    1、最高位:为1----则是后面位(如123,则应取23);不为1------则是最高位的(如223,则取100)

    2、其它位:如223,可分为0-23,24-123,124-223。其它位是指24-123,124-223的除最高位的1其余可能有的1,可以发现24-123其实其它位为:25,26···99,0,1,2···23,可计算为:最高位*后一位的权重*除最高位其余位数(2*2*10,可看做每一位为1时,其它位为任意整数的所有可能)

    3、再加上0-23.

     1 class Solution {
     2 public:
     3     string intostr(int n)
     4         {
     5         string s;
     6         while(n!=0)
     7             {
     8             s+=n%10+'0';
     9             n=n/10;
    10         }
    11         string res;
    12         for(int i=s.size()-1;i>=0;i--)
    13             {
    14             res+=s[i];
    15         }
    16         return res;
    17     }
    18     int pow(int len)
    19         {
    20         int sum=1;
    21         while(len>0)
    22         {
    23             sum*=10;
    24             len--;
    25         }
    26         return sum;
    27     }
    28     int sumall(string s,int len)
    29         {
    30         if(len==s.size()-1)
    31             {
    32             if((s[len]-'0')!=0)
    33                 return 1;
    34             else return 0;
    35         }
    36         int first=0,second=0,last=s[len]-'0';
    37         if(last>1)
    38             first=pow(s.size()-len-1);
    39         else if(last==1)
    40              first=atoi(&s[0]+len+1)+1;
    41             second=last*(s.size()-len-1)*pow(s.size()-len-2);
    42             return first+second+sumall(s,len+1);
    43     }
    44     int NumberOf1Between1AndN_Solution(int n)
    45     {
    46       if(n<=0)
    47           return 0;
    48         string s;
    49         s=intostr(n);
    50         int sum=0;
    51         sum=sumall(s,0);
    52         return sum;
    53     }
    54 };
  • 相关阅读:
    KETTLE:mongdb与mysql互传数据
    6.azkban的监控
    5.azkaban权限管理
    3.azkaban3.0测试
    2.azkaban3.0安装
    1.编译azkaban
    十六:The YARN Service Registry
    十四:Using CGroups with YARN
    十二:NodeManager
    十 Writing YARN Applications
  • 原文地址:https://www.cnblogs.com/daocaorenblog/p/5381197.html
Copyright © 2020-2023  润新知