A43446. 计数输入一个正整数n(1 <=n<= 1000),统计从1到n之间(包含1和n)所有正整数中,0,1,2,3,4,5,6,7,8,9的数字分别出现的次数,且按样例分行输出(按0到9顺序输出,英文逗号前为0到9的数字,逗号后为该数字出现的次数)。例如:n为12,那么1到n之间所有的正整数有1,2,3,4,5,6,7,8,9,10,11,12.在12个正整数中数字0出现了1次数字1出现了5次数字2出…
填空题
困难
知识点
题目描述
计数
输入一个正整数n(1 <=n<= 1000),统计从1到n之间(包含1和n)所有正整数中,0,1,2,3,4,5,6,7,8,9的数字分别出现的次数,且按样例分行输出(按0到9顺序输出,英文逗号前为0到9的数字,逗号后为该数字出现的次数)。
例如:n为12,那么1到n之间所有的正整数有1,2,3,4,5,6,7,8,9,10,11,12.
在12个正整数中数字0出现了1次数字1出现了5次数字2出现了2次数字2,3,4,5,6,7,8,9分别出现了1次。
输入描述
输入一个正整数n
输出描述
0,0出现的次数
1,1出现的次数
2,2出现的次数
………
9,9出现的次数
样例输入
10
样例输出
0,1
1,2
2,1
3,1
4,1
5,1
6,1
7,1
8,1
9,1
参考答案
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> count(10, 0); // 用于统计每个数字出现的次数
for (int i = 1; i <= n; i++) {
int num = i;
while (num > 0) {
int digit = num % 10; // 获取当前数字的最低位
count[digit]++; // 对应数字的次数加一
num /= 10; // 去掉最低位
}
}
for (int i = 0; i <= 9; i++) {
cout << i << "," << count[i] << endl;
}
return 0;
}
//参考代码2
#include <bits/stdc++.h>
using namespace std;
int n, cnt[10];
void getans(int x) {
for (; x; x /= 10)
++cnt[x % 10];
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for (int i = 1; i <= n; ++i)
getans(i);
for (int i = 0; i < 10; ++i)
cout << i << ',' << cnt[i] << '\n';
return 0;
}答案解析
评分标准:
10分:能正确输出一组数据;
20分:能正确输出两组数据;
20分:能正确输出三组数据;
上一题
下一题