#include <stdio.h>
int main()
{
int x,num,sum[10]={0};
scanf("%d",&x);
for(int i =1;i<=x;i++)
{
num = i;
while(num>0)
{
sum[num%10] += 1;
num = num/10;
}
}
for(int i = 0;i<10;i++)
{
printf("%d %d\n",i,sum[i]);
}
}
采纳一下谢谢
一维既可以
int main()
{
int pages[10]={0};
int n;
cin>>n;
for (int i = 1; i <= n; i++) {
int tmp=i;
while (tmp) {
int x=tmp%10;
pages[x]++;
tmp=tmp/10;
}
}
for (int j = 0; j < 10; j++) {
cout<<j<<" "<<pages[j]<<endl;
}
return 0;
}
该回答引用GPTᴼᴾᴱᴺᴬᴵ
以下是Python的代码实现,可以用来解决这个问题:
n = int(input()) # 输入书的总页数
# 初始化一个列表,用于记录每个数字需要的活字数
counts = [0] * 10
# 遍历每一页,统计每个数字出现的次数
for i in range(1, n + 1):
for digit in str(i):
counts[int(digit)] += 1
# 输出结果
for i in range(10):
print(f"{i:4d} {counts[i]:4d}")
首先,我们通过 input() 函数获取书的总页数。然后,我们初始化一个列表 counts,用于记录每个数字需要的活字数。我们遍历每一页,将每个数字出现的次数加到 counts 列表中相应数字的计数器上。最后,我们遍历 counts 列表,输出每个数字需要的活字数。
需要注意的是,我们使用了 Python 3.6 引入的一种新的字符串格式化方式 f-string,这样可以更方便地控制输出的格式。例如,f"{i:4d} {counts[i]:4d}" 的意思是将 i 和 counts[i] 分别输出为长度为 4 的整数,如果不足 4 位,则在左侧补上空格。这样可以使输出对齐,更加美观。