C语言蓝桥杯2022年第十三届省赛真题-数位排序
时间: 2023-05-26 16:03:15 浏览: 163
题目描述
给定一个整数 n,对于 0~9 中的每一个数字 d,统计 n 的各个数字中数位 d 出现的次数,并按照数位从大到小的顺序依次输出这些次数。例如,n=1974333232,0~9 中每个数字出现次数的列表为 [0, 1, 2, 3, 3, 3, 1, 0, 0, 0],则输出:
3323331110
输入格式
一个整数 n。
输出格式
一行字符串,表示每个数位出现次数,从大到小的顺序输出。
数据范围
1≤n≤10^10
输入样例1
1234567890
输出样例1
1111111111
输入样例2
2397847298347382437328947289023840230
输出样例2
20000000300300222122111110
题目解析
首先读入一个整数 n,然后依次从 0 到 9 统计 n 的各个数字中数位 d 出现的次数。最后,按照数位从大到小的顺序依次输出这些次数。统计数位出现次数的方法可以使用一个桶,记录每个数位出现的次数。
C++ 代码
#include <stdio.h>
int a[10];
int main()
{
long long n;
scanf("%lld", &n);
while (n) {
a[n % 10]++;
n /= 10;
}
for (int i = 9; i >= 0; --i) {
for (int j = 0; j < a[i]; ++j)
printf("%d", i);
}
return 0;
}
阅读全文