数字统计(区间数字)

来源:互联网 发布:ae软件好学吗 编辑:程序博客网 时间:2024/04/27 17:57

1206: 数字统计

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 8  Solved: 3
[Submit][Status][Web Board]

Description

一本书的页码从自然数1 开始顺序编码直到自然数n。书的页码按照通常的习惯编排, 
每个页码都不含多余的前导数字0。例如,第6 页用数字6 表示,而不是06 或006 等。数 
字计数问题要求对给定书的总页码n,计算出书的全部页码中分别用到多少次数字0,1, 
2,…,9。

Input

给出表示书的总页码的整数n(1≤n≤2^31-1)

Output

输出10行,在第k行输出页码中用到数字k-1 的次数,k=1,2,…,10。

Sample Input

11

Sample Output

1411111111

HINT

Source


#include<cstdio>#include<iostream>#include<cstring>#define ll long longusing namespace std;ll  b[10] = { 1, 10, 100, 1000, 10000, 100000, 1000000,10000000, 100000000, 1000000000};ll count_num ( ll n, ll id ){    ll left, m, sum = 0;    for ( int i = 1; i < 12; i++ )    {        left = n / b[i] - (id==0);        sum += left * b[i-1];        m = (n % b[i] - n % b[i-1]) / b[i-1]; //求出从第到高的第i位上的具体数字        if ( m > id ) sum += b[i-1];        else if ( m == id ) sum += n % b[i-1] + 1;        if ( n < b[i] ) break;    }    return sum;}int main(){    ll n,m,f;    ll a[10];    int i;    cin>>n;    //{        for(i=0;i<=9;i++)        {            a[i]=count_num(n,i)-count_num(0,i);        }        for(i=0;i<=9;i++)        {            cout<<a[i]<<endl;        }    //}}


0 0
原创粉丝点击