统计0到n之间1的个数

来源:互联网 发布:python sha256加密 编辑:程序博客网 时间:2024/04/24 15:03

问题描述

给定一个十进制整数N,求出从1到N的所有整数中出现”1”的个数。 

例如:N=2时 1,2出现了1个 “1” 。

N=12时 1,2,3,4,5,6,7,8,9,10,11,12。出现了5个“1”。

public class Main {void solve(int n){int count = 0;for(int i=1;i<=n;i++){int t = i; while(t>0){if(t%10==1) count++;t /= 10;}}System.out.println(count);}void solve2(int n){int i = 1;int before=0;//由i位前决定的1数目(高位)int current = 0;//由i位决定的1数目int after=0;//由i位后决定的1数目(低位)int count = 0;while((n/i)>0){current = (n/i)%10;before = n/i/10;after = n - (n / i) * i;if(current>1){count = count + (before + 1) * i;}else if (current == 0){count = count + before * i;}else if (current == 1){count = count + before * i + after + 1;}i = i * 10;}System.out.println(count);}public static void main(String[] args) {Main m = new Main();m.solve(12013);}}

0 0
原创粉丝点击