当前位置: 移动技术网 > IT编程>脚本编程>Python > PTA刷题记录:L1-003 个位数统计 (15分)

PTA刷题记录:L1-003 个位数统计 (15分)

2020年08月10日  | 移动技术网IT编程  | 我要评论
L1-003 个位数统计题目要求:给定一个k位整数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 中出现的次数

L1-003 个位数统计 (15分)

题目要求:
给定一个k位整数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

解题思路:
定义一个用来存放统计结果的数组,遍历字符串,将对应数字出现的个数统计到该数组中。最后遍历该数组,将不为 0 的元素及其对应的数字输出,其对应的数字即为元素对应的下标值。

通关代码:

#include <iostream>
#include <string>

using namespace std;

int main() {
	string str;
	int arr[10]{0}; 
	
	cin >> str;
	
	for (string::iterator p = str.begin(); p != str.end(); p++) {
		switch (*p) {
			case '0': arr[0]++; break;
			case '1': arr[1]++; break;
			case '2': arr[2]++; break;
			case '3': arr[3]++; break;
			case '4': arr[4]++; break;
			case '5': arr[5]++; break;
			case '6': arr[6]++; break;
			case '7': arr[7]++; break;
			case '8': arr[8]++; break;
			case '9': arr[9]++; break;
		}
	}
	for (int i = 0; i < 10; i++) {
		if (arr[i] != 0) {
			cout << i << ":" << arr[i] << endl;
		}
	}
	
	return 0;
} 

通关截图:
在这里插入图片描述

值得一提:
这道题我写了很多遍,每一次的结果都是没问题的,但是总是出现一个错误,最后我发现是输入有问题:得以一个字符串的形式输入这个整数。。。而我出错的代码都是用 int 型数据输入的。因为 int 型能存放的整型数据可远远到达不了 1000 位。

本文地址:https://blog.csdn.net/weixin_45711556/article/details/107867602

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网