📄 统计数字1.txt
字号:
#include<stdio.h>
int Num[10] = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000};//Num[i]表示i位数的个数,例如:Num[2],表示00-99的总个数
int count[10];
int main()
{
int i, j, k;
int page, len, temp;
while(scanf("%d", &page)+1)
{
printf("本书共有%d页。\n", page);
for(i=0; i<10; ++i)count[i] = 0;
temp = page, len = 0;
while(temp)
{
++len;
temp /= 10;
}
while(len)
{
temp = page / Num[len-1];//例如数字xxIxx,则数码I出现的次数可以记为(xx+1)*Num[2]
k = temp % 10;
count[k] += (page + 1 - temp*Num[len-1]);//例如221,最高位的2出现的次数是221+1-200,即2-00到2-21共22个
j = temp / 10;//例如数字xxIxx,temp=xxI, j在计算0到(I-1)的数码出现次数时用的到:(j+1)*Num[2]
for(i=0; i<k; ++i)//计算0到(I-1)的数码出现次数
{
count[i] += (j + 1)*Num[len-1];
}
while(i<10)//I到9的各个数码出现次数,例如221里面,十位可以出现2,3,……9,但是要求百位只能是0,1,而不能是2,所以这里是j*Num[len-1],而不是(j+1)*Num[len-1]
{
count[i] += j*Num[len-1];
++i;
}
count[0] -= Num[len-1];
--len;
}
for(i=0; i<10; ++i)
printf("数码%d出现的次数:%d\n", i, count[i]);
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -