(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−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
题目分析:
题目比较简单,主要注意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; }
相关文章推荐
- (PAT Basic)1031 查验身份(字符串处理) C++
- PAT1021 BASIC:个位数统计 (15)
- PAT 乙级1021.个位数统计(15)
- PAT(basic level) 1021 个位数统计(15)
- (PAT Basic)1024.科学计数法(字符串操作) C++
- PAT Basic Level 1021. 个位数统计 (15)
- PAT (Basic Level) Practise (中文)1021. 个位数统计 (15) C语言
- PAT (Basic Level)1021. 个位数统计
- (PAT Advanced)1001.A+B Format(字符串处理) C++
- PAT1021.个位数统计
- PAT (Basic Level) Practise:1021. 个位数统计
- PAT Basic 1021. 个位数统计 (15)(C语言实现)
- Pat(Basic Level)Practice--1021(个位数统计)
- PAT BASIC LEVEL 1021. 个位数统计 (15)
- PAT(Basic Level)_1021_个位数统计
- PAT Basic Level 1021. 个位数统计(15)
- [PAT-乙级]1021.个位数统计
- PAT (Basic Level) Practise (中文) 1021. 个位数统计 (15)
- PAT乙级(Basic Level)真题 1011.个位数统计
- PAT-乙级-1021.个位数统计