PTA--1021 個位數統計(15分)
阿新 • • 發佈:2021-01-30
PTA–1021 個位數統計 (15分)
題目:
給定一個 k 位整數
N
=
d
k
−
1
1
0
k
−
1
+
⋯
+
d
1
1
0
1
+
d
0
(
0
≤
d
i
≤
9
,
i
=
0
,
⋯
,
k
−
1
,
d
k
−
1
>
0
)
N=d_{k-1}10^{k−1}+⋯+d_11 0^1+d_0(0≤di≤9, i=0,⋯,k−1, d_{k−1}>0)
N=dk−110k−1+⋯+d1101+d0(0≤di≤9,i=0,⋯,k−1,dk−1>0)
請編寫程式統計每種不同的個位數字出現的次數。
例如:給定
N
=
100311
N=100311
N=100311,則有 2 個 0,3 個 1,和 1 個 3。
輸入格式:
每個輸入包含 1 個測試用例,即一個不超過 1000 位的正整數 N。
輸出格式:
對 N 中每一種不同的個位數字,以D:M
的格式在一行中輸出該位數字D
及其在 N 中出現的次數 M
。要求按 D
的升序輸出。
輸入樣例 1:
100311
輸出樣例 1:
0:2
1:3
3:1
題目分析:
- 首先題目意思是要我們統計每一個數字出現的次數,我們輸入的是不超過1000位的數字(超出了
long long
的範圍所以可以考慮使用字串),通過字串將每個數字出現的此處儲存在陣列當中,最後從小到大按格式輸出出現過的數字的次數。
程式碼如下:
#include <bits/stdc++.h>
using namespace std;
int main(){
char number[1005]; //資料輸入的預先處理
int i,sum_num[10];
memset(sum_num,0,sizeof(sum_num));
cin>>number; //數字輸入
for(i=0;i<strlen(number);i++) //記錄每位數字在N中出現的次數
sum_num[number[i]-'0']++;
for(i=0;i<10;i++) //輸出每位數字在N中出現的次數
if(sum_num[i]!=0)
printf ("%d:%d\n",i,sum_num[i]);
return 0;
}