ITstudied 2020-05-01
给定一个 k 位整数 N=d?k−1??10?k−1??+?+d?1??10?1??+d?0?? (0≤d?i??≤9, i=0,?,k−1, d?k−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
题目很简单,直接上代码
#include<iostream> #include<string> #include<map> using namespace std; int main() { map<int,int> mp; string N; cin>>N; for(int i=0;i<10;i++) mp[i]=0; for(unsigned int i=0;i<N.length();i++) { switch(N[i]-‘0‘) { case 0: mp[0]++;break; case 1: mp[1]++;break; case 2: mp[2]++;break; case 3: mp[3]++;break; case 4: mp[4]++;break; case 5: mp[5]++;break; case 6: mp[6]++;break; case 7: mp[7]++;break; case 8: mp[8]++;break; case 9: mp[9]++;break; } } for(int i=0;i<10;i++) { if(mp[i]==0) //出现次数为0的数字跳过 continue; cout<<i<<":"<<mp[i]<<endl; } return 0; }
ac了