首页 > 其他分享 >[pat乙]1021. 个位数统计

[pat乙]1021. 个位数统计

时间:2023-03-20 15:04:09浏览次数:37  
标签:pat countN ++ 个位数 else int 1021 include void

1021. 个位数统计 (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

#include <iostream>
#include <string>
using namespace std;


int C0 = 0, C1 = 0, C2 = 0, C3 = 0, C4 = 0, C5 = 0, C6 = 0, C7 = 0, C8 = 0, C9 = 0;
void countN(string N)
{
	for (int i = 0; i < N.size(); i++)
	{
		if (N[i] - '0' == 0)
			C0++;
		else if (N[i] - '0' == 1)
			C1++;
		else if (N[i] - '0' == 2)
			C2++;
		else if (N[i] - '0' == 3)
			C3++;
		else if (N[i] - '0' == 4)
			C4++;
		else if (N[i] - '0' == 5)
			C5++;
		else if (N[i] - '0' == 6)
			C6++;
		else if (N[i] - '0' == 7)
			C7++;
		else if (N[i] - '0' == 8)
			C8++;
		else if (N[i] - '0' == 9)
			C9++;
	}

}

void printN()
{
	if (C0)
		cout << "0:" << C0 << endl;
	if (C1)
		cout << "1:" << C1 << endl;
	if (C2)
		cout << "2:" << C2 << endl;
	if (C3)
		cout << "3:" << C3 << endl;
	if (C4)
		cout << "4:" << C4 << endl;
	if (C5)
		cout << "5:" << C5 << endl;
	if (C6)
		cout << "6:" << C6 << endl;
	if (C7)
		cout << "7:" << C7 << endl;
	if (C8)
		cout << "8:" << C8 << endl;
	if (C9)
		cout << "9:" << C9 << endl;
}

int main()
{
	string N;
	cin >> N;

	countN(N);
	printN();
	return 0;
}

2 桶计数

#include <iostream>
#include <string>
using namespace std;

int Cnt[10] = {0};
void countN(string N)
{
	for (int i = 0; i < N.size(); i++)
		for (int j = 0; j < 10; j++)
			if (N[i] - '0' == j)
				Cnt[j]++;

}

void printN()
{
	for (int i = 0; i < 10; i++)
		if (Cnt[i])
			cout << i << ':' << Cnt[i] << endl;
}

int main()
{
	string N;
	cin >> N;
	
	countN(N);
	printN();

	return 0;
}

标签:pat,countN,++,个位数,else,int,1021,include,void
From: https://blog.51cto.com/u_16014765/6132935

相关文章

  • [pat乙]1022 D进制的A+B
    1022D进制的A+B(20分)输入两个非负10进制整数A和B(≤2​30​​−1),输出A+B的D(1<D≤10)进制数。输入格式:输入在一行中依次给出3个整数A、B和D。......
  • [pat乙]1023. 组个最小数
    1023.组个最小数(20)给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:给定两个0,两个1,三个......
  • [pat乙]1032 挖掘机技术哪家强
    1032挖掘机技术哪家强(20)(20分)为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。输入格式:输入在......
  • [pat乙]1013 数素数
    1013数素数(20分)算法标签:欧拉筛1013数素数(20分)令P​i​​表示第i个素数。现任给两个正整数M≤N≤10​4​​,请输出P​M​​到P​N​​的所有素数。......
  • [pat乙]1015 德才论
    1015德才论(25分)宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不......
  • [pat乙]1018.锤子剪刀布
    1018.锤子剪刀布大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势......
  • [pat乙]1016 部分A+B
    1016部分A+B(15分)正整数A的“D​A​​(为1位整数)部分”定义为由A中所有D​A​​组成的新整数P​A​​。例如:给定A=3862767,D​A​​=6,则A的“6部分”P​A......
  • [pat乙]1011 A+B 和 C
    1011A+B和C(15分)给定区间[−2​31,2​31​​]内的3个整数A、B和C,请判断A+B是否大于C。输入格式:输入第1行给出正整数T(≤10),是测试用例的个数......
  • [pat乙]1005 继续(3n+1)猜想
    1005继续(3n+1)猜想(25分)卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程......
  • [pat乙]1010 一元多项式求导
    1010 一元多项式求导(25)设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为n*xn-1。)输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000......