題目要求:給定乙個k位整數n = dk-1*10k-1 + … + d1*101 + 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解題思路:初一看此題,覺得可以拆分數字的每一位進行分別判斷,然而題目中的要求為「輸入乙個不超過1000位的正整數n」,數字型別中即使使用long long 也無法獲取到乙個1000位的正整數,所以我們思考此處使用string型別獲取輸入進行拆分。
參考**:
#include
#include //下文需要呼叫string的length()函式,所以此處需要包含標頭檔案
using
namespace
std;
int main()
; //用來記錄每乙個數出現的次數,b[0]為0出現的次數
for(int i=0;iswitch ((int)a[i]-48) //將string拆分後是char型別,所以需要通過轉化為int再-48才能得
//到乙個相同的整數
for(int i=0;i<10;i++) //因為是按照數字公升序排列,所以此時從i=0開始檢查
if(b[i]) //b[i]有值才輸出,b[i]有值證明i出現過,所以才列印
cout
<":"
//乙個數就換行,使列印美觀又**簡單
return
0;}
PAT B1021 個位數統計 15
題目要求 給定乙個k位整數n dk 1 10k 1 d1 101 d0 0 di 9,i 0,k 1,dk 1 0 請編寫程式統計每種不同的個位數字出現的次數。例如 給定n 100311,則有2個0,3個1,和1個3。輸入格式 每個輸入包含1個測試用例,即乙個不超過1000位的正整數n。輸出格式 對...
PAT B1021 個位數統計 15
馬克一下這個有紀念意義的題,因為它某種程度上說明了我的蠢。給定乙個k位整數n dk 1 10k 1 d1 101 d0 0 di 9,i 0,k 1,dk 1 0 請編寫程式統計每種不同的個位數字出現的次數。例如 給定n 100311,則有2個0,3個1,和1個3。輸入格式 每個輸入包含1個測試用例...
PAT B1021 個位數統計 15
給定乙個k位整數n dk 1 10k 1 d1 101 d0 0 di 9,i 0,k 1,dk 1 0 請編寫程式統計每種不同的個位數字出現的次數。例如 給定n 100311,則有2個0,3個1,和1個3。輸入格式 每個輸入包含1個測試用例,即乙個不超過1000位的正整數n。輸出格式 對n中每一種...