PAT乙级1021

1021 个位数统计 (15分)

题目地址:https://pintia.cn/problem-sets/994805260223102976/problems/994805300404535296

难搞哦

输入格式

每个输入包含 1 个测试用例,即一个不超过 1000 位的正整数 N。

输出格式:

对 N 中每一种不同的个位数字,以 D:M 的格式在一行中输出该位数字 D 及其在 N 中出现的次数 M。要求按 D 的升序输出。

输入样例

100311

输出样例

0:2
1:3
3:1

我的理解

前面的N= 、、、是数学表达式,看到后面的我就明白什么意思了,统计字符串中数字0 ~ 9 出现的次数,并且按照0 ~ 9 的顺序进行输出。

代码段

#include <iostream>
using namespace std;
int main(){
    string N;
    cin >> N;
    int counter[10] = {0};
    int limit = N.length();
    for (int i = 0; i < limit; i++) {
        counter[N[i] - '0']++;
    }
    for (int i = 0; i < 10; i++) {
        if (counter[i] != 0) {
            // cout << i << ":" << counter[i] << endl;
            printf("%d:%d\n", i, counter[i]);
        }
    }
    return 0;
}

更改过程

  1. 难得的一遍AC、、、
  2. 而且发现一个问题,为什么我电脑上之前测试的使用cout是比printf输出要快的,可是在PAT上提交测试printf是比较快的,难搞哦
posted @ 2020-01-26 21:06  Another7  阅读(138)  评论(0编辑  收藏  举报