您的位置:首页 > 编程语言 > C语言/C++

(PAT Basic)1021.个位数统计(字符串处理) C++

2019-02-28 14:48 120 查看

原题:https://pintia.cn/problem-sets/994805260223102976/problems/994805300404535296

给定一个 k 位整数 N=dk−110k−1+...+d1101+d0(0≤di≤9,i=0,...,k−1,dk−1>0)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=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

题目分析:
题目比较简单,主要注意N的大小和C语言中整数能表达的数值范围。
因为N为不超过1000位的正整数,所以⽤字符串s来接收N,遍历字符串中的每个字符,将每个
数字出现的次数保存在数组a中,a[i]表示数字i出现的次数,最后将数组a的下标0-9中所有a[i]不为0的输出即可。

#include <iostream>
#include <vector>
#include<string>

using namespace std;

int main() {
vector<int> showtime(10); //每种数字出现的次数初始化为0
string N;
cin >> N;
int i;
for (i = 0; i < N.length(); i++) showtime[N[i] - '0']++;
for (i = 0; i < showtime.size(); i++) {
if (showtime[i]) cout << i << ":" << showtime[i] << endl;
}

system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: