你前边有多少个一?

题目要求

给定一个十进制的正整数,记录从1开始,到N的所有整数,然后数一下其中出现“1”的个数。

写一个函数 f(N) ,返回1 到 N 之间出现的“1”的个数。例如 f(12)  = 4。

实验思路

从个位开始考虑,个位上若不为0,则有一的个数为n/10+1,否则为n/10;

十位上若不为0,则有一的个数为(n/100+1)*10,否则为n/100;

百位上若不为0,则有一的个数为为(n/1000+1)*100,否则为n/1000;

考虑若最高位上为一,则最高位有一的个数为n去掉最高位的一;

实验代码

package 多少个一;

import java.util.Scanner;

public class aa {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int a,b,l;
        int i;
        double m;
        Scanner scanner = new Scanner(System.in);
        //System.out.print("请输入一个数:");
        //a=scanner.nextInt();
        scanner.close();

        for(a=1;a<=100;a++)
        {
            l=1;
            b=a;
            while(b/10!=0)
            {
                l++;
                b/=10;
            }
            b=a;
            int[] c = new int[l+1];
            int[] d = new int[l+1];
            c[0]=0;d[0]=a;
            for(i=1;i<=l;i++)
            {
                c[i]=b%10;
                d[i]=d[i-1]/10;
                b/=10;
            }
            m=0;
            for(i=1;i<=l-1;i++)
            {
                if(c[i]>=1)
                    m=m+(d[i]+1)*Math.pow(10,i-1);
                else
                    m=m+(d[i])*Math.pow(10,i-1);
            }
            if(c[l]>1)
                m=m+(d[i]+1)*Math.pow(10,i-1);
            else if(c[l]==1)
                m=m+a%Math.pow(10,i-1);
            System.out.print(a);
            System.out.print("前边共有");
            System.out.print(m);
            System.out.print("个1.  ");
            if(a%10==0)
                System.out.println();
        }

    }

}

实验截图

时间: 2024-07-30 10:28:23

你前边有多少个一?的相关文章

HDU4000Fruit Ninja【树状数组+组合数】

大意: 告诉你一个有n个数的序列 (1 -- n) 问其中有多少组 (a[i], a[j], a[k]) 满足i < j < k 并且 a[i] < a[k] < a[j] 分析: 这个题跟那个中间为峰值的题很像   我的第一反应为树状数组 求的就是在这个序列当中  小大中 一共会出现多少次 小大中 = (小中大 + 小大中) — 小中大 (小中大 + 小大中) 也就是说只要前面这个数是小的  后面的大的数中任取两个就可以了 用两个数组来维护 一个qian[]用来存前边有多少个小于

10000小时法则

10000小时法则(The 10,OOO Hour Rule),简单地说,任何人要在任何领域出类拔萃,脱颖而出,都需要认真投入10000小时以上.10000小时是一个突破的临界点.以每天10个小时算,10000小时相当于三年.也就是说,要做成功一件事情,你就要每天10小时投入,持续3年.如果每天只有5小时,那么需要6年. 10000小时是成功的临界点在学习的过程中,完美掌握某项复杂技能存在一个练习最小临界量.事实上,研究者们就练习时长给出一个神奇的临界量:10,000小时! “研究发现,任何一个

python学习之模块--模块(五)

5.10 包 5.10.1 包的概念 [官网解释] Packages are a way of structuring Python's module namespace by using "dotted module names" 包是一种通过使用'.模块名'来组织python模块名称空间的方式. 具体的:包就是一个包含有__init__.py文件的文件夹,所以其实我们创建包的目的就是为了用文件夹将文件/模块组织起来 [强调]: 在python3中,即使包下没有__init__.py

!HDU 4380 三角屋内有奇数个宝藏的三角形有多少个-计算几何-(向量叉乘&amp;线段与点的关系&amp;暴力枚举)

题意:小明要买三座房子,这三个房子构成一个三角形,已知n个房子的坐标,任何三个房子都不在一条直线上,又已知有m个宝藏的坐标,问房子构成的三角形内有奇数个宝藏的三角形有多少个.数据范围:n(3~100),m(1~1000) 分析: 简单的计算几何.记住这题的做法. 三角形内的点的个数=上面的线段下面的点的个数 -- 下面两条线段下面的点的个数(或者下面一条线段减上面两条线段,看具体位置情况,所以直接取绝对值就好) n个点有n(n-1)/2条线段,不超过1W,枚举每条线段,再枚举每个宝藏的坐标(10

mysql 怎么查询出,分组后的总条数。。。也就是有多少组数。。。。怎么写

SELECT COUNT(*) AS 多少组数FROM( SELECT id FROM 表 GROUP BY id) subQuery;Mysql,有一个表含有以下字段,uid 发帖人id,title 发帖标题,tc 发帖内容,time 发帖时间,用一条语句算出昨天发帖书大于10的,一共有多少人? select count(*) from (select distinct startperson_id,count(startperson_id) as num from apphome_finan

全球最牛的100家AI创企:有多少独角兽?

全球最牛的100家AI创企:有多少独角兽? 自2012年以来,在共计263笔交易中筹集了38亿美元.那么,这100家顶尖AI公司主要集中在哪些方向?其中有多少家独角兽公司?中国企业表现如何呢? 近期,CB Insights发布了一份全球"AI 100"名单.该名单从全球1650家AI企业中评选出了100家最具创新实力.最有前途的公司.这些公司来自11个国家和地区,处于不同的发展阶段,自2012年以来,在共计263笔交易中筹集了38亿美元.那么,这100家顶尖AI公司主要集中在哪些方向?

java代码实现:12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种?

此题参考与其他人思路, 2个解题方式. 1. 1 /** 2 * 用java代码实现:12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种? 3 * 状态树方式解 4 * 用状态生成树的方式来做的,先把12个人按从低到高一次编号, 5 * 从(1 ; 2)出发,加入3和4的时候生成(1,3 ; 2,4)和(1,2 ; 3,4), 6 * 然后加入5和6,分别从前面的两个状态出发,可以生成5种状态,就是说6个人时有5种排列 7 * @author

已知笼中有头h个,有脚f条,问笼中鸡兔各有多少只

描述    已知笼中有头h个,有脚f条,问笼中鸡兔各有多少只, 如果无法组成    输入    h(0<h<2147483647)    f(0<f<2147483647)    输出    鸡的数目    兔子的数目 public class Main {     public static void main(String[] args){         int h = 0;         int f = 0;         Scanner scanner = new S

流量主第四篇:004_五万粉丝的微信公众号,一个月流量主收入大概有多少?

在粉丝未达到五万人时,一直想知道符合流量主时,一个月广告费收入大概有多少钱,很荣幸在2104年的最后一个月粉丝量成功达到五万人,当时马上就开通了流量主. 以2014年12月为例,全月流量主收入9687.78元,平均每天在312.5元左右,供各位正在运营微信公众号的朋友参考.当时这只是一个月的数据,代表性不强,仅供参考.同时也欢迎各位关注我们的微信公众号[领悟人生](zs18650),谢谢! http://blog.sina.com.cn/s/blog_a6bb70be0102vmh5.html