给定一个 k 位整数 N=dk−110k−1+⋯+d1101+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
题目很简单,直接上代码
1 #include<iostream> 2 #include<string> 3 #include<map> 4 using namespace std; 5 int main() 6 { 7 map<int,int> mp; 8 string N; 9 cin>>N; 10 for(int i=0;i<10;i++) 11 mp[i]=0; 12 for(unsigned int i=0;i<N.length();i++) 13 { 14 switch(N[i]-'0') 15 { 16 case 0: mp[0]++;break; 17 case 1: mp[1]++;break; 18 case 2: mp[2]++;break; 19 case 3: mp[3]++;break; 20 case 4: mp[4]++;break; 21 case 5: mp[5]++;break; 22 case 6: mp[6]++;break; 23 case 7: mp[7]++;break; 24 case 8: mp[8]++;break; 25 case 9: mp[9]++;break; 26 } 27 } 28 for(int i=0;i<10;i++) 29 { 30 if(mp[i]==0) //出现次数为0的数字跳过 31 continue; 32 cout<<i<<":"<<mp[i]<<endl; 33 } 34 return 0; 35 }
ac了