PTA 1117 数字之王 C++实现 简易代码

给定两个正整数 N1​<N2​。把从 N1​ 到 N2​ 的每个数的各位数的立方相乘,再将结果的各位数求和,得到一批新的数字,再对这批新的数字重复上述操作,直到所有数字都是 1 位数为止。这时哪个数字最多,哪个就是“数字之王”。

例如 N1​=1 和 N2​=10 时,第一轮操作后得到 { 1, 8, 9, 10, 8, 9, 10, 8, 18, 0 };第二轮操作后得到 { 1, 8, 18, 0, 8, 18, 0, 8, 8, 0 };第三轮操作后得到 { 1, 8, 8, 0, 8, 8, 0, 8, 8, 0 }。所以数字之王就是 8。

本题就请你对任意给定的 N1​<N2​ 求出对应的数字之王。

输入格式:

输入在第一行中给出两个正整数 0<N1​<N2​≤10^3,其间以空格分隔。

输出格式:

首先在一行中输出数字之王的出现次数,随后第二行输出数字之王。例如对输入 1 10 就应该在两行中先后输出 6 和 8。如果有并列的数字之王,则按递增序输出。数字间以 1 个空格分隔,行首尾不得有多余空格。

输入样例:

10 14

输出样例:

2
0 8

解题思路:

模拟过程即可,但本题测试点有一点坑,尤其要注意输入是两个个位数的情况,处理不对会有两个测试点过不了

比如当n1为1 n2为5时候,则直接输出:

1

1 2 3 4 5

代码示例: 

#include <bits/stdc++.h>

using namespace std;

int main() {
	int n1, n2;
	cin >> n1 >> n2;

	vector<int> nums;
	for (int i = n1; i <= n2; i++) {
		nums.emplace_back(i);
	}

	//先判断n1到n2的数字序列是否都为个位数的情况,这种情况可以直接输出
	//比如n1为1 n2为5,则直接输出:
	//1
	//1 2 3 4 5
	if (n1 <= 9 && n2 <= 9) {
		cout << 1 << endl;
		for (int i = 0; i < nums.size(); i++) {
			if (i != 0) {
				cout << " ";
			}
			cout << nums[i];
		}
		return 0; //程序结束 不再执行后续语句
	}

	//再处理n1到n2的数字序列不都为个位数的情况
	vector<int> nums2; //用于存得到的每一批新的数字
	while (true) {
		for (int i = 0; i < nums.size(); i++) {
			string temp1 = to_string(nums[i]); //将nums中的每个数转化为字符串

			//将nums中的每个数的各位数的立方相乘
			int fact = 1;
			for (int j = 0; j < temp1.length(); j++) {
				fact *= (temp1[j] - '0') * (temp1[j] - '0') * (temp1[j] - '0');
			}

			//再将fact的各位数求和
			string temp2 = to_string(fact); //将fact转化为字符串
			int sum = 0;
			for (int k = 0; k < temp2.length(); k++) {
				sum += temp2[k] - '0';
			}

			nums2.emplace_back(sum); //存入处理后的数字
		}

		//判断nums2中的数是否都为个位数
		bool flag = true;
		for (int j = 0; j < nums2.size(); j++) {
			if (nums2[j] > 9) { //大于9就代表至少两位数了
				flag = false;
			}
		}

		if (flag == false) { //代表nums2中的数不都为个位数 需要再次处理
			nums = nums2;
			nums2.clear(); //清除掉nums2中的所有数
		}
		else {
			break; //只有当nums2中的数字都为个位数的情况下才会停止while循环
		}
	}

	//最后找出数字之王
	//multiset容器中允许有重复的数字 且存进去的数字会自动升序排序
	multiset<int> res;
	for (int i = 0; i < nums2.size(); i++) {
		res.insert(nums2[i]);
	}

	int max_val = 0; //找出最大出现次数
	for (auto p = res.begin(); p != res.end(); p++) {
		if (max_val < res.count(*p)) { //res.count(*p)用于查找*p的出现次数
			max_val = res.count(*p);
		}
	}
    
    //set容器会将存进去的数字去重处理(不会有重复的数字) 且存进去的数字会自动升序排序
	set<int> ans;
	for (auto p = res.begin(); p != res.end(); p++) {
		if (res.count(*p) == max_val) {
			ans.insert(*p); //将出现次数最多的数字(数字之王)都存入ans中
		}
	}

	//由于ans中的数字之王已经自动升序排序 那么直接按格式输出即可
	cout << max_val << endl;
	for (auto p = ans.begin(); p != ans.end(); p++) {
		if (p != ans.begin()) {
			cout << " ";
		}
		cout << *p;
	}

	return 0;
}

运行结果: 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/318205.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在线直线度测量仪确保了出厂圆棒无不合格品

在线直线度测量仪确保了出厂圆棒无不合格品 随着生产设备的改进&#xff0c;利用基础材料进行生产的厂家对品质要求也越来越高&#xff0c;其中圆形棒管材的直线度尺寸&#xff0c;也是广受关注&#xff0c;对其进行矫直检测&#xff0c;使其出厂无不合格品。 变抽检为全检 以前…

逼格满满,推荐一个高效测试用例工具:XMind2TestCase !

一、背景 软件测试的核心是什么&#xff1f;毫无疑问是测试分析和测试用例设计&#xff0c;也是日常测试投入最多时间的工作内容之一。 然而&#xff0c;传统的测试用例设计过程有很多痛点&#xff1a; 1、使用Excel表格进行测试用例设计&#xff0c;虽然成本低&#xff0c;但…

Java 并发性和多线程3

七、线程安全及不可变性 当多个线程同时访问同一个资源&#xff0c;并且其中的一个或者多个线程对这个资源进行了写操作&#xff0c;才会产生竞态条件。多个线程同时读同一个资源不会产生竞态条件。 我们可以通过创建不可变的共享对象来保证对象在线程间共享时不会被修改&…

Github 2FA验证的解决方法

当前使用GitHub需要启用 2FA 验证&#xff0c;也就是除了账号密码外还有一个实时码&#xff0c;需要额外输入这个正确的实时码才能开启 2FA 验证和后续登陆。 浏览器插件 这是目前我在使用的方法。在浏览器中添加一个叫做Authenticator的插件&#xff0c;传送地址&#xff1a;…

MySQL 和 Redis 如何保证数据一致性,通过MySQL的binlog实现

1、简介 MySQL 和 Redis 如何保证数据一致性&#xff0c;目前大多讨论的是先更新Redis后更新MySQL&#xff0c;还是先更新MySQL 后更新Redis&#xff0c;这两种方式在实际的应用场景中都不能确保数据的完全一致性&#xff0c;在某些情况下会出现问题&#xff0c;本文介绍使用 C…

京东宣布启动鸿蒙原生应用开发,全力支持鸿蒙生态 | 百能云芯

华为常务董事、终端BG CEO、智能汽车解决方案BU董事长余承东于1月10日在微博上发布了一条令人振奋的消息&#xff1a;京东即将启动鸿蒙原生应用的开发。这一消息在科技圈掀起了不小的波澜&#xff0c;也为鸿蒙系统的发展注入了新的动力。 京东集团首席执行官兼执行董事许冉和余…

RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)

0. 前言 按照国际惯例&#xff0c;首先声明&#xff1a;本文只是我自己学习的理解&#xff0c;虽然参考了他人的宝贵见解及成果&#xff0c;但是内容可能存在不准确的地方。如果发现文中错误&#xff0c;希望批评指正&#xff0c;共同进步。 本文基于论文Faster R-CNN: Towards…

大一统的监控探针采集器 cprobe

需求背景 监控数据采集领域&#xff0c;比如 Prometheus 生态有非常多的 Exporter&#xff0c;虽然生态繁荣&#xff0c;但是无法达到开箱即用的大一统体验&#xff0c;Exporter 体系的核心问题有&#xff1a; 良莠不齐&#xff1a;有的 Exporter 写的非常棒&#xff0c;有的…

uniapp怎么开发插件并发布

今天耳机坏了,暂时内卷不了,所以想开发几个插件玩玩,也好久没写博客了,就拿这个来写了 首先,发布插件时需要你有项目 这里先拿uniapp创建一个项目, 如下,创建好的项目长这样 然后根据uniapp官网上说的,我们发布插件时,需要在uni_modules里面编写和发布 ps:还需要使用uniapp…

计算机组成原理期末复习

文章目录 第一章&#xff1a;计算机系统漫游编译系统进程线程之间的关系存储器层次结构虚拟地址 第二章&#xff1a;信息的表示和处理大端与小端整数运算浮点数运算 第三章&#xff1a;程序的机器级表示栈的压入和弹出算数与逻辑运算操作指令条件判断与循环 第六章&#xff1a;…

U盘抜太快打不开恢复方法

U盘是一种常用的存储设备&#xff0c;由于其便携性和大容量等特点&#xff0c;被广泛应用于数据存储和传输。然而&#xff0c;有时候我们会遇到U盘拔出后无法再次使用的问题&#xff0c;这通常是由于U盘拔出太快导致的。本文将深入探讨U盘拔太快打不开的原因&#xff0c;并提供…

【elfboard linux 开发板】10. 设备树与烧录

1. 设备树介绍 设备树由一系列被命名的node和property组成 可以描述如下信息&#xff1a; CPU的数量和类别内存基地址和大小总线和桥外设连接中断控制器和中断使用情况GPIO控制器和GPIO使用情况Clock 控制器和 Clock 使用情况 由dts文件以文本方式对系统设备树进行描述&…

GPT-4V的图片识别和分析能力原创

GPT-4V是OpenAI开发的大型语言模型&#xff0c;是GPT-4的升级版本。GPT-4V在以下几个方面进行了改进&#xff1a; 模型规模更大&#xff1a;GPT-4V的参数量达到了1.37T&#xff0c;是GPT-4的10倍。 训练数据更丰富&#xff1a;GPT-4V的训练数据包括了1.56T的文本和代码数据。 …

Ubuntu 22.04 安装prometheus

服务器监控和报警软件有很多&#xff0c;为什么我们会选择Prometheus而不是其他软件呢&#xff1f; 因为它有以下优点&#xff1a; 自带简易web监控页面&#xff0c;用户可以很方便地查看监控数据和使用仪表盘。能实时收集数据并根据自定义警报规则推送告警&#xff1b;具有丰…

力扣双周赛第三题----2857. 统计距离为 k 的点对

这题我们的暴力做法就是o(n^2),但是根据数据量这样会超时&#xff0c;所以我们不能用暴力解法去解决 那么想一想双指针可以吗&#xff0c;不可以。为什么呢&#xff1f;因为他没有一个特性可以让他双指针跳过前面或者后面一个点。比如他们数组有顺序的情况下&#xff0c;还有一…

【JaveWeb教程】(23) MySQL数据库开发之事务与索引 详细代码示例讲解(最全面)

目录 2. 事务2.1 介绍2.2 操作2.3 四大特性 3. 索引3.1 介绍3.2 结构3.3 语法 2. 事务 场景&#xff1a;学工部整个部门解散了&#xff0c;该部门及部门下的员工都需要删除了。 操作&#xff1a; -- 删除学工部 delete from dept where id 1; -- 删除成功-- 删除学工部的员工…

某厂校招一道关于C的笔试题

一、笔试原题 题目&#xff1a;在Linux x86 _ 54 gcc环境下&#xff0c;下面的程序会出现什么问题&#xff1f;运行结果是什么&#xff1f;为什么&#xff1f; 程序如下图&#xff1a; 通过在gcc的环境下编译运行&#xff0c;发现运行结果为不断死循环打印0-17的数字 我们…

遥感影像-语义分割数据集:高分卫星-云数据集详细介绍及训练样本处理流程

原始数据集详情 简介&#xff1a;该云数据集包括RGB三通道的高分辨率图像&#xff0c;包含高分一、高分二及宽幅数据集。 KeyValue卫星类型高分系列覆盖区域未知场景未知分辨率1m、2m、8m数量12000单张尺寸1024*1024原始影像位深8位标签图片位深8位原始影像通道数三通道标签图…

云卷云舒:AI for DB、DB for AI

云卷云舒&#xff1a;算力网络云原生&#xff08;下&#xff09;&#xff1a;云数据库发展的新篇章-CSDN博客https://blog.csdn.net/bishenghua/article/details/135050556 随着数据库和AI技术的分支同向演进&#xff0c;AI 和数据库间的关联越发紧密了。 大模型的演进发展&a…

为何资深程序员都离不开 requirements.txt?你还在为环境配置发愁吗?

requirements.txt 文件是一个用于记录 Python 包依赖的文件&#xff0c;它能够帮助我们快速配置开发环境。在迁移到新的开发环境时&#xff0c;通常需要逐个使用 pip install 命令安装各种包&#xff0c;这个过程既耗时又可能出现错误。 而 requirements.txt 文件可以让我们一…