1. 程式人生 > >PAT乙級——1011 個位數統計 (C/C++)

PAT乙級——1011 個位數統計 (C/C++)

時間限制 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;
}