一、题目内容

给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数。
要求:
写一个函数 f(N) ,返回1 到 N 之间出现的 “1”的个数。例如 f(12)  = 5。
在32位整数范围内,满足条件的“f(N) =N”的最大的N是多少。

二、设计思路

按每个位来计算1的数量,每相邻的三位数有联系,abc,就先算c,再加上b,最后再加上a

三、实验代码

//FindOne.java
package com.minirisoft;
import java.util.Scanner;
public class FindOne {
public static int Sum( int n )
{
int Count = 0;
int Factor = 1;
int Lower = 0;
int Curr = 0;
int Higher = 0;
while( n / Factor != 0 )
{
Lower = n - ( n / Factor ) * Factor;
Curr = (n / Factor ) % 10;
Higher = n / ( Factor *10 );
switch( Curr )
{
case 0:
Count += Higher * Factor;
break;
case 1:
Count += Higher * Factor + Lower + 1;
break;
default:
Count += ( Higher + 1 ) * Factor;
break;
}
Factor *= 10;
}
return Count;
}
public static void main(String[] args)
{
Scanner input=new Scanner(System.in);
System.out.print("请输入一个正整数:");
int n=input.nextInt();
System.out.print("1到"+n+"的1个数为:"+Sum(n)+"个");
}
}

四、实验截图

五、心得体会

一般设计程序,要找到题目的规律,根据规律在做出程序

java实现找一个数范围内所有的一的更多相关文章

  1. Java找N个数中最小的K个数,PriorityQueue和Arrays.sort()两种实现方法

    最近看到了 java.util.PriorityQueue.刚看到还没什么感觉,今天突然发现他可以用来找N个数中最小的K个数. 假设有如下 10 个整数. 5 2 0 1 4 8 6 9 7 3 怎么 ...

  2. leetcode1:在数组中找2个数的和正好等于一个给定值--哈希

    package java_net_test; import java.util.HashMap; import java.util.Iterator; import java.util.Map; pu ...

  3. 在数组中找几个数的和等于某个数[LeetCode]

    首先明确一点,这个方面的问题设计到的知识点是数组的查找的问题.对于类似的这样的查找操作的具体办法就是三种解决方法: 1.暴力算法,多个for循环,很高的时间复杂度 2.先排序,然后左右夹逼,但是这样会 ...

  4. 记一次解决cmd中执行java提示"找不到或无法加载主类"的问题

    今天遇到一个问题:在cmd命令行中,用javac编译java文件可以成功,但是用java执行却提示“找不到或无法加载主类”.现将该问题的原因以及解决办法记录一下. 先理解一下系统变量path和clas ...

  5. Java 错误: 找不到或无法加载主类,问题集合

      正确编译命令: javac Hello.java 正确运行命令: java Hello   错误1:H:\code>java Hello.java 错误: 找不到或无法加载主类 Hello. ...

  6. 编译和运行java文件 找不到或无法加载主类

    这边提供一个关于程序中含有package关键字,使用“终端”运行程序时出现“找不到或无法加载主类”,而使用Eclipse软件可以正常运行程序的可能解决办法. 例如程序名为HelloWorldTest. ...

  7. java实现12306的45分钟内支付,45分钟后取消订单功能?

    java实现12306的45分钟内支付,45分钟后取消订单功能? - 回答作者: 匿名用户 https://zhihu.com/question/27254071/answer/35948645

  8. ACM-ICPC 2018 南京赛区网络预赛 J sum (找一个数拆成两个无平方因子的组合数)

    题目大意:就是找一个数拆成两个无平方因子的组合数,然后求个前缀和  ; 分析:运用筛法的思想 ,  因为有序对是由两个合法的数字组成的,所以只要保证第一个数合法,第二个数也合法就行,找出合法的第二个数 ...

  9. 查看java中的线程个数名称

    查看java中的线程个数名称 package com.stono.thread2; import java.lang.management.ManagementFactory; import java ...

随机推荐

  1. 【深入理解JVM】类加载器与双亲委派模型

    原文链接:http://blog.csdn.net/u011080472/article/details/51332866,http://www.cnblogs.com/lanxuezaipiao/p ...

  2. 原根求解算法 && NTT算法

    原根求解算法: 获取一个数\(N\)的原根\(root\)的算法 #include<bits/stdc++.h> #define ll long long #define IL inlin ...

  3. 【Luogu1876】开灯(数论)

    [Luogu1876]开灯(数论) 题面 题目描述 首先所有的灯都是关的(注意是关!),编号为1的人走过来,把是一的倍数的灯全部打开,编号为二的的把是二的倍数的灯全部关上,编号为3的人又把是三的倍数的 ...

  4. SpringMVC 注解式开发

    SpringMVC的注解式开发是指,处理器是基于注解的类的开发.对于每一个定义的处理器,无需再配置文件中逐个注册,只需在代码中通过对类与方法的注解,便可完成注册.即注解替换是配置文件中对于处理器的注册 ...

  5. 关于Android attrs 自定义属性的说明

    写个自定义控件时经常要自定义一些自己的属性,平时用的都是那几个,今天就顺便一起总结一下这个东东吧- 一.定义:属性的定义都在attrs.xml文件里面: 二.读取:通过都是通过TypedArray去读 ...

  6. Android端 高德地图点击得到经纬度

    <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=&q ...

  7. JAVA设计模式--装饰器模式

    装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 这种模式创建了一个装饰 ...

  8. NancyFX 第三章 Web框架

    如果使用Nancy作为一个WEB框架而言,会有什么不同?实际上很多. 在使用Nancy框架为网页添加Rest节点和路由和之前的Rest框架中是相同的,这方面没有什么需要学习的了.Nancy采用一贯的处 ...

  9. C++实现控制台版2048

    前言 之前做过一个JavaScript版本的2048游戏,最近在学习C++,昨天晚上突然心血来潮,想用C++来实现,因为核心算法已十分理解,所以两个小时撸出来一个C++的简易版本. 简介 二维数组遍历 ...

  10. js备战春招の四のjs函数

    1.普通函数声明: 2.函数表达式:函数表达式可以存储在变量中,在函数表达式存储在变量后,变量也可作为一个函数使用: 以上函数实际上是一个 匿名函数 (函数没有名称).函数存储在变量中,不需要函数名称 ...