import java.util.Scanner;

public class main {

	/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int num;
Scanner in = new Scanner(System.in);
num=in.nextInt();
int x=0,y=1;
int a,b,c;
while(num>=y)
{
a=num/(10*y);
c=(num/y)%10;
if(y==1)
b=0;
else
b=num%y; if(c==0)
x+=a*y;
else if(c==1)
x+=a*y+1+b;
else
x+=(a+1)*y;
System.out.println(+a+" "+c+" "+b+" "+x);
y=y*10;
} } }

结果截图解释:每行依次向下分别为将个位,十位,百位,千位......分离出来得到的结果,每一行的四个数分别代表当前位数前面的数,当前位上的数,当前位上后面的数,加到当前位时一共加到的1的和,由于个位没有后面的数,最高位上没有前面的数,所以都赋值为0。

思路:将一个数以内的1的个数写成各位上1的个数相加的形式,就可以得到规律:所有的1的个数即为每位上出现的1的个数的和,而每位上1的个数为:当当前位上的数等于0时,1的个数是前面的数乘以当前位10,100,或1000;当当前位上的数等于1时,1的个数为数乘以当前位10,100,或1000再加上后面面的数再加1;当当前位上的数大于1时,1的个数为前面的数加1再乘以当前位!

如:1234的十位

将是位上的数分离出来后得到的前位数前面的数,当前位上的数,当前位上后面的数分别为:12   3    4

由于3>1,十位上的1的个数为:(12+1)*10=130;

若是1214的十位

将是位上的数分离出来后得到的前位数前面的数,当前位上的数,当前位上后面的数分别为:12   1    4

由于3==1,十位上的1的个数为:12*10+4+1=125;

若是1204的十位

将是位上的数分离出来后得到的前位数前面的数,当前位上的数,当前位上后面的数分别为:12   0    4

由于3==0,十位上的1的个数为:12*10=120。

n以内的1的个数的更多相关文章

  1. 【模板小程序】求M~N范围内的质数个数

    /* 本程序说明: [编程题] 求素数 时间限制:2秒 空间限制:32768K 输入M.N,1 < M < N < 1000000,求区间[M,N]内的所有素数的个数.素数定义:除了 ...

  2. java代码走查审查规范

    分类 重要性 检查项 备注 命名         重要 命名规则是否与所采用的规范保持一致? 成员变量,方法参数等需要使用首字母小写,其余单词首字母大写的命名方式,禁止使用下划线(_)数字等方式命名不 ...

  3. hihocoder #1112 树上的好路径

    时间限制:1000ms单点时限:1000ms内存限制:256MB 描述 现在有一棵有N个带权顶点的树,顶点编号为1,2,...,N.我们定义一条路径的次小(最小)权为它经过的所有顶点(包括起点和终点) ...

  4. 总结的一些网站利于搜索引擎优化的小常识及SEO优化

    网站利于搜索引擎优化的小常识 1. 尽量用独立IP和空间原因:同IP下其他网站受罚,可能会对你站有影响.如果你的站和很多垃圾.色情站同在一个服务器,搜索引擎会喜欢吗? 2. 做不同内容网站时,避免使用 ...

  5. 高性能图片服务器–ZIMG

    2011年李彦宏在百度联盟峰会上就提到过互联网的读图时代已经到来1,图片服务早已成为一个互联网应用中占比很大的部分,对图片的处理能力也相应地变成企业和开发者的一项基本技能.需要处理海量图片的典型应用有 ...

  6. 【leetcode❤python】172. Factorial Trailing Zeroes

    #-*- coding: UTF-8 -*-#给定一个整数N,那么N的阶乘N!末尾有多少个0? 比如:N=10,N!=3628800,N!的末尾有2个0.#所有的尾部的0可以看做都是2*5得来的,所以 ...

  7. vijosP1447 开关灯泡

    vijosP1447 开关灯泡 链接:https://vijos.org/p/1447 [思路] 数学+高精度. 分析题目:题中有言,i时刻将其所有倍数的灯熄灭,由此得知一个数有多少个倍数就会被操作多 ...

  8. poj1243(经典dp)

    题目链接:http://poj.org/problem?id=1243 题意:让你猜一个物品的价格,猜低了或者猜高了都会提示你.G,L,表示你有G次机会猜一个数,如果猜错了,G会减少1次,如果你的错误 ...

  9. Codeforces Round #257 (Div. 1)A~C(DIV.2-C~E)题解

    今天老师(orz sansirowaltz)让我们做了很久之前的一场Codeforces Round #257 (Div. 1),这里给出A~C的题解,对应DIV2的C~E. A.Jzzhu and ...

随机推荐

  1. STL容器与拷贝构造函数

    所有容器提供的都是“value语意”而非“reference语意”.容器内进行元素的安插操作时,内部实施的是拷贝操作,置于容器内.因此STL容器 的每一个元素都必须能够拷贝.---<<C+ ...

  2. N个数中第k个最大者

    #include<stdio.h> #include<stdlib.h> void bubbleSort(int arr[],int n) { int i,j; ;i>; ...

  3. 各国货币json文件

    [ {"countryname":"","name":"请选择","currency":" ...

  4. python3爬虫-使用requests爬取起点小说

    import requests from lxml import etree from urllib import parse import os, time def get_page_html(ur ...

  5. 2017-2018-1 20155222 《信息安全系统设计基础》第10周 Linux下的IPC机制

    2017-2018-1 20155222 <信息安全系统设计基础>第10周 Linux下的IPC机制 IPC机制 在linux下的多个进程间的通信机制叫做IPC(Inter-Process ...

  6. Unity3d之Hash&Slash学习笔记(一)--角色属性类的构架

    角色属性类的构架 角色属性类有8个类,继承关系如下图: 每个类的具体作用见之后的随笔

  7. STM8S——watchdog(IWDG)

    IWDG工作原理: 1.当键值寄存器(IWDG_KR)中写入数值0xCC后,独立看门狗就会被启动,计数器开始从它的复位值0xFF开始递减计数,当计数减到0x00时就会产生一个复位信号. 2.使用IWD ...

  8. Docker Manager for Kubernetes

    一.Kubernetes介绍 Kubernets是Google开源的容器集群系统,是基于Docker构建一个容器的调度服务,提供资源调度,均衡容灾,服务注册,动态伸缩等功能套件: Kubernets提 ...

  9. [Unity Shader] 常用的数值类型和语义

    书看到第八章,跟随写了一些例子,但有些数值类型的使用还是需要特别注意,经常需要查阅,在这里做一下总结. 1 ShaderLab属性类型和Cg变量类型的匹配关系 Color.Vector:float4, ...

  10. 4.three.js中的坐标系

    Three.js中的坐标系 three.js中坐标系使用的是左手坐标系 左手坐标系和右手坐标系的对比: 当然three.js中使用的是右手坐标系 three.js中的旋转的定义 但是three.js中 ...