1. 程式人生 > 其它 >PTA--1021 個位數統計(15分)

PTA--1021 個位數統計(15分)

技術標籤:C語言pta

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_1​1 ​​ 0^1+d_0(0≤d​i≤9, i=0,⋯,k−1, d_{​k−1}>0) N=dk110k1++d1101+d0(0di9,i=0,,k1,dk1>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; }