题目:
给定一个 k 位整数 N=dk−110k−1+⋯+d1101+d0 (0≤di≤9, i=0,⋯,k−1, dk−1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定 N=100311,则有 2 个 0,3 个 1,和 1 个 3。
输入格式:
每个输入包含 1 个测试用例,即一个不超过 1000 位的正整数 N。
输出格式:
对 N 中每一种不同的个位数字,以
D:M
的格式在一行中输出该位数字D
及其在 N 中出现的次数M
。要求按D
的升序输出。输入样例:
100311
输出样例:
0:2 1:3 3:1
#include<iostream>
#include <cstdio>
using namespace std;
const int maxn = 1001;
struct Node {
int f;
int count;
}node[maxn];
int main()
{
for (int i = 0; i < maxn; i++)
{
node[i].f = 0;
node[i].count = 0;
}
char N[maxn];//输入一整数
cin >> N;
int j = 0;
while (N[j] != '\0')//遍历每一位
{
switch (N[j])
{
case '0':
node[0].f = 1;
node[0].count++;
break;
case '1':
node[1].f = 1;
node[1].count++;
break;
case '2':
node[2].f = 1;
node[2].count++;
break;
case '3':
node[3].f = 1;
node[3].count++;
break;
case '4':
node[4].f = 1;
node[4].count++;
break;
case '5':
node[5].f = 1;
node[5].count++;
break;
case '6':
node[6].f = 1;
node[6].count++;
break;
case '7':
node[7].f = 1;
node[7].count++;
break;
case '8':
node[8].f = 1;
node[8].count++;
break;
case '9':
node[9].f = 1;
node[9].count++;
break;
}
j++;
}
for (int i = 0; i <= 9; i++)
{
if (node[i].f == 1)
{
cout << i << ":" << node[i].count;
cout << endl;
}
}
return 0;
}