您的位置:首页 > 其它

1021. 个位数统计 (15)

2017-04-28 13:04 375 查看
给定一个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
#include <stdio.h>#include <iostream>#include <vector>#include <algorithm>#include   <map> using namespace std;struct mypair{    char index;    int count;};int cmp(const mypair &x, const mypair &y) {    return x.index < y.index; }int main(){    char str[1010];    cin>>str;    char *p=str;    map<char, int> pe;    for(int i=0;i<10;i++)pe.insert(make_pair<char,int>('0'+i,0));     while(*p!='\0'){        pe[*p]++;        p++;    }    vector <mypair> pair_vec;    for(map<char, int>::iterator it=pe.begin();it!=pe.end();++it){        mypair t;        t.index=it->first;        t.count=it->second;        pair_vec.push_back(t);    }     sort(pair_vec.begin(),pair_vec.end(),cmp);    for(vector <mypair>::iterator it=pair_vec.begin();it!=pair_vec.end();++it){        if(it->count!=0)cout<<it->index<<":"<<it->count<<endl;    }    return 0;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: