测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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分:能正确输出三组数据;

上一题 下一题