zoukankan      html  css  js  c++  java
  • 计算1-n之间1的个数

    求出113的整数中1出现的次数,并算出1001300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。
    找规律题,
    0-9 1的个数,pow(10,0)+100
    0-99 1的个数 pow(10,1)+(pow(10,0)+10
    0)10
    0-999 1的个数 pow(10,2)+(pow(10,1)+(pow(10,0)+10
    0)10)10
    然后从右到左一次计算1出现的个数,例如21345,
    5:1;
    4:10 + 41;
    3:100 + 3
    20;
    1:345+100+1(2010);
    2:10000+2((2010+100)* 10 + 1000));
    1为特殊情况,如果为21345,不考虑万位,则千位为1,只有345个,那么计算0-999的1的个数即可。

    public class Solution {
        public int NumberOf1Between1AndN_Solution(int n) {
            int level = 1,count = 0;
            int num = n;
            while(n>0){
                int p = n%10;
                if(p > 1){
                   count += chen(level-1) * p + (int)Math.pow(10,level-1);
                }else if(p==1){
                    count += chen(level-1)+(level == 1?1:1+num%((int)Math.pow(10,level-1)));
                }
                level++;
                n = n / 10;
            }
            return count;
        }
        int chen(int level){
            if(level == 0)    return 0;
            return 10*chen(level-1)+(int)Math.pow(10,level-1);
        }
    }
    
  • 相关阅读:
    对于Spring使用注解的一点总结
    2014-01-12
    Struts2补充a
    2014从Struts2开始
    总结:XHTML中链接CSS的四种方法(笔记)
    XHTML
    我Web前端开发的开端
    踏上前端路
    调取手机相册和拍照功能js
    mac常用系统指令和终端指令总结
  • 原文地址:https://www.cnblogs.com/a1225234/p/11024634.html
Copyright © 2011-2022 走看看