统计数字问题
统计数字问题
问题描述
一本书的页码从自然数1 开始顺序编码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。例如,第6 页用数字6 表示,而不是06 或006 等。数字计数问题要求对给定书的总页码n,计算出书的全部页码中分别用到多少次数字0,1,2,3,4,5,6,7,8,9。
输入
共一行,输入书的页数n
输出
共10行,第一行代表数字0出现的个数,第二行代表数字1出现的个数。。。。。
方法一:暴力法
#include<iostream>
using namespace std;
int main()
{
int c[10]={0};//用一维数组存储0~9出现的次数,初始值都为0
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
int tmp=i;//用tmp代表页数,从第一页开始,一直到第n页
while(tmp)
{
c[tmp%10]++;//例如tmp=10,则tmp%10为0,0的个数加一
tmp/=10;//然后10/10为1,循环后1的个数加一
}
}
for(int i=0;i<10;i++)
{
cout<<c[i]<<endl;
}
return 0;
}