您的位置:首页 > 其它

数字统计问题

2015-08-10 14:38 218 查看
【问题描述】一本书的页码从自然数1 开始顺序编码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。例如,第6 页用数字6 表示,而不是06 或006 等。数字计数问题要求对给定书的总页码n,计算出书的全部页码中分别用到多少次数字0,1,2,…,9。给定表示书的总页码的10 进制整数n (1≤n≤109) 。编程计算书的全部页码中分别用到多少次数字0,1,2,…,9。

【样例输入】

11

【样例输出】

1

4

1

1

1

1

1

1

1

1

【解答】

#include<stdio.h>

int main()

{

int n,j;

scanf("%d",&n);

int a[10]={0};

int i;

for(j=1;j<=n;j++)

{

i=j;

while(i)//计算个位数字

{

if(i%10==0)

{

a[0]+=1;

}

if(i%10==1)

{

a[1]+=1;

}

if(i%10==2)

{

a[2]+=1;

}

if(i%10==3)

{

a[3]+=1;

}

if(i%10==4)

{

a[4]+=1;

}

if(i%10==5)

{

a[5]+=1;

}

if(i%10==6)

{

a[6]+=1;

}

if(i%10==7)

{

a[7]+=1;

}

if(i%10==8)

{

a[8]+=1;

}

if(i%10==9)

{

a[9]+=1;

}

i=i/10;//n缩小10倍

}

}

for(j=0;j<10;j++)

{

printf("%d\n",a[j]);

}

return 0;

}

时间复杂度为O(n*log(n))较高,还需优化
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: