PAT乙級——1011 個位數統計 (C/C++)
阿新 • • 發佈:2019-01-09
時間限制 1000 ms 記憶體限制 32768 KB 程式碼長度限制 100 KB
題目描述
給定一個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
採用類似雜湊的思想即可實現。
考慮到個位數只可能是0-9之間的某一個,因此可以使用陣列替代map。
貼程式碼:
#include <iostream> #include <string> using namespace std; int main(void) { string strN; cin>>strN; int cnt[10] = {0}; for (unsigned int i = 0; i < strN.length(); ++i) { cnt[strN[i] - '0']++; } for (int i = 0; i < 10; ++i) { if (cnt[i]) { cout<<i<<":"<<cnt[i]<<endl; } } return 0; }