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

题目描述

求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。

highValue == 0 退出

 1 # -*- coding:utf-8 -*-
 2 class Solution:
 3     def NumberOf1Between1AndN_Solution(self, n):
 4         # write code here
 5         precise = 1
 6         lowValue = 1
 7         highValue=1
 8         midValue=1
 9         sumNum = 0
10         num = 0
11         count = 0
12         while highValue!=0:
13             highValue = n // (precise*10)
14             midValue = n // (precise) % 10
15             lowValue = n % (precise)
16             precise = precise*10
17
18             if midValue == 0:
19                 num = (highValue-1+1)*pow(10,count)
20             elif midValue > 1:
21                 num = (highValue+1)*pow(10,count)
22             else:
23                 num = highValue*pow(10,count)+lowValue+1
24             sumNum += num
25             count += 1
26         return sumNum

2019-12-21 21:07:12

原文地址:https://www.cnblogs.com/NPC-assange/p/12078239.html

时间: 2024-10-14 03:29:24

31.整数中1出现的次数(从1到n整数中1出现的次数)的相关文章

从1到非负整数n中1出现的次数 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数? 为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次, 但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化, 可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。

/*从1到非负整数n中1出现的次数求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了.ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数). */ import java.util.*; public class Class36 { public int NumberOf1Between1A

保存ActionForm中未编辑的字段为NULL,尤其整数不赋0值

Struts中,如果ActionForm里某些字段没有编辑(即没有输入值),提交后直接保存到数据库时,这些字段保存为""(String)或0(int),可是在实际开发中,可能需要将其保存位null,如何实现呢? 最直观的办法:判断字段是否为空,如果为空,则返回null 最简单的办法:修改ActionServlet配置下init-param,具体如下 ActionServlet配置下init-param: 1 <init-param> 2 <param-name>

LoadRunner中Action的迭代次数的设置和运行场景中设置

LoadRunner中Action的迭代次数的设置和运行场景中设置 LoadRunner是怎么重复迭代和怎么增加并发运行的呢? 另外,在参数化时,对于一次压力测试中均只能用一次的资源应该怎么参数化呢?就是说这些资源用了一次就不能在用了的. --参数化时,在select  next row选择unique,update value on选择 each occurence, 1. 迭代跟虚拟用户数没什么必然联系 迭代是这样的: 迭代1次   迭代2次  迭代3次 用户1     X1        

找出数组中两数之和为指定值的所有整数对

一,问题描述 给定一个整型数组(数组中的元素可重复),以及一个指定的值.打印出数组中两数之和为指定值的 所有整数对 二,算法分析 一共有两种方法来求解.方法一借助排序,方法二采用HashSet 方法一: 先将整型数组排序,排序之后定义两个指针left和right.left指向已排序数组中的第一个元素,right指向已排序数组中的最后一个元素 将 arr[left]+arr[right]与 给定的元素比较,若前者大,right--:若前者小,left++:若相等,则找到了一对整数之和为指定值的元素

[转载]DllMain中不当操作导致死锁问题的分析--导致DllMain中死锁的关键隐藏因子2

(转载于breaksoftware的csdn博客) 本文介绍使用Windbg去验证<DllMain中不当操作导致死锁问题的分析--导致DllMain中死锁的关键隐藏因子>中的结论,调试对象是文中刚开始那个例子. 1 g 让程序运行起来 2 ctrl+break 中断程序 3 ~ 查看线程数 其实该程序自己运行起来的线程只有ID为0.TID为afc的线程.18c4线程是我们在windbg中输入ctrl+break,导致windbg在我们调试的进程中插入的一个中断线程.以后我们看到是这个线程的操作

浅谈C#中Control的Invoke与BeginInvoke在主副线程中的执行顺序和区别

今天无意中看到有关Invoke和BeginInvoke的一些资料,不太清楚它们之间的区别.所以花了点时间研究了下. 据msdn中介绍,它们最大的区别就是BeginInvoke属于异步执行的. Control.Invoke 方法 (Delegate) :在拥有此控件的基础窗口句柄的线程上执行指定的委托. Control.BeginInvoke 方法 (Delegate) :在创建控件的基础句柄所在线程上异步执行指定委托. msdn说明: 控件上的大多数方法只能从创建控件的线程调用. 如果已经创建控

Android系统篇之----Android中的run-as命令引出升降权限的安全问题(Linux中的setuid和setgid)

一.前言 最近一周比较忙,没时间写东西了,今天继续开始我们今天的话题:run-as命令,在上周的开发中,遇到一个问题,就是在使用run-as命令的时候出现了一个错误,不过当时因为工作进度的问题,这问题就搁浅没有解决,用了其他一个曲线救国的方式去解决的.那么咋们今天闲来说说Android中的run-as命令吧. 二.遇到的问题&解决问题 Android中我们知道如果设备没有root,我们想看一个应用的沙盒数据(/data/data/目录内容),在以前的方式很难办到,一般人都是选择root之后,去查

Java中如何在另一个类里面使用运行类中的对象,举例说明了一下。

1 package 计时器; 2 3 import java.util.Timer; 4 import java.util.TimerTask; 5 6 /* 7 * 主要是想在另一个类里面,使用该类的对象,如何使用呢?如何传递同一个实例对象 8 */ 9 public class TimerDemo { 10 public static void main(String[] args) { 11 Timer t = new Timer(); 12 t.schedule(new MyTask(t

java中父类与子类, 不同的两个类中的因为构造函数由于递归调用导致栈溢出问题

1 /* 2 对于类中对成员变量的初始化和代码块中的代码全部都挪到了构造函数中, 3 并且是按照java源文件的初始化顺序依次对成员变量进行初始化的,而原构造函数中的代码则移到了构造函数的最后执行 4 */ 5 import static java.lang.System.out; 6 7 public class PersonDemo 8 { 9 public static void main(String[] args) 10 { 11 //*********测试父类与子类之间的循环调用的问