循环数题目讲解

题目

描述

若一个n位的数字串满足下述条件,则称其是循环数(cyclic):将这个数字串视为整数(可能带有前导0),并用任意一个 1 到 n 之间(包含1和n)的整数去乘它时, 会得到一个将原数字串首尾相接后,再在某处断开而得到的新数字串所对应的整数。例如,数字 142857 是循环数,
因为:
142857 *1 = 142857
142857 *2 = 285714
142857 *3 = 428571
142857 *4 = 571428
142857 *5 = 714285
142857 *6 = 857142。
请写一个程序判断给定的数是否是循环数。
注意:在此题中,输入数字串允许带前导0,且前导0不能被忽略,例如“01”是两位数字串,而“1”是一位数字串。但将数字串转化为整数做乘法运算或比较运算时,可以忽略前导0。

输入描述

一行,一个长度在 2 到 60 位之间的数字串。

输出描述

一个整数,若输入的数字串是循环数,输出1,否则输出0。

用例输入 

142857

用例输出 

1

以下是对这道 C++ 题目实现判断给定数字串是否为循环数的详细讲解:

1. 解题思路

  • 首先,我们需要读取输入的数字串。
  • 然后,根据数字串的长度 n,我们要依次用 1 到 n 去乘以这个数字串所对应的整数(忽略前导 0 转换而来),并检查得到的结果是否符合循环数的定义,即是否是原数字串首尾相接后在某处断开得到的新数字串所对应的整数。
  • 如果对于所有的 1 到 n 的乘法运算结果都满足循环数的条件,那么该数字串就是循环数,输出 1;否则,输出 0

2. 代码实现如下:

#include <iostream>
#include <string>
#include <sstream>// 函数用于将数字串转换为整数(忽略前导0)
long long stringToInt(const std::string& numStr) {std::istringstream iss(numStr);long long num;iss >> num;return num;
}// 函数用于检查数字串是否为循环数
int isCyclic(const std::string& numStr) {int n = numStr.length();long long num = stringToInt(numStr);for (int i = 1; i <= n; ++i) {long long product = num * i;std::string productStr = std::to_string(product);// 如果乘积的长度不等于原数字串长度,肯定不是循环数if (productStr.length()!= n) {return 0;}// 将原数字串复制两份,用于模拟首尾相接的情况std::string doubledNumStr = numStr + numStr;// 检查乘积对应的数字串是否能在复制后的数字串中找到if (doubledNumStr.find(productStr) == std::string::npos) {return 0;}}return 1;
}int main() {std::string numStr;std::cin >> numStr;std::cout << isCyclic(numStr) << std::endl;return 0;
}

3. 代码讲解

(1)stringToInt 函数

  • 这个函数的作用是将输入的数字串转换为整数类型。它通过创建一个 istringstream 对象,将数字串作为输入流,然后利用流提取运算符 >> 将数字串解析为整数并返回。在这个过程中,会自动忽略前导 0。
(2)isCyclic 函数

  • 首先,获取输入数字串的长度 n,并通过调用 stringToInt 函数将数字串转换为整数 num
  • 然后,使用一个循环从 1 到 n 依次进行乘法运算。对于每次乘法:
    • 计算 num 与 i 的乘积 product,并将其转换为数字串 productStr
    • 首先检查乘积的数字串长度是否与原数字串长度相等,如果不相等,那么肯定不符合循环数的定义,直接返回 0
    • 接着,通过将原数字串复制两份得到 doubledNumStr,模拟了原数字串首尾相接的情况。然后使用 find 函数检查乘积对应的数字串 productStr 是否能在 doubledNumStr 中找到,如果找不到,也不符合循环数的定义,返回 0
  • 如果循环结束后都没有返回 0,说明对于所有的乘法运算结果都满足循环数的条件,那么该数字串就是循环数,返回 1
(3)main 函数

  • 在 main 函数中,首先读取输入的数字串 numStr
  • 然后调用 isCyclic 函数判断该数字串是否为循环数,并将结果输出到控制台。

通过以上代码,我们就可以根据题目要求准确地判断输入的数字串是否为循环数了。

若有错误,请在评论区指出!

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

机器人课程——使用TIA Portal V15博图软件进行西门子组态——带显示屏

一.打开TIA Portal V15博图软件创建项目 1.选择创建新项目 创建完成后选择PLC 二.创建完成后选择设备PLC (此处以S7-1200 1214FC DC/DC/DC 为例) 三.添加扩展板&#xff08;如有——这里以223-1BL32-0XB0为例&#xff09; 四.更改扩展版地址 五.添加触摸屏&#xff08;这里以…

Java代码与数据库纽带——JDBC

ok&#xff0c;看了题目&#xff0c;就可以知道今天要分享的是JDBC 讲这个这之前&#xff0c;想讲讲之前的。 之前我们操作数据库基本都是通过MySQL客户端&#xff0c;进行编写sql语句来操作的。 但是我们在开发中一般都是通过代码来操控数据库的。 而且在我们日常开发中&a…

Webserver(5.6)服务器压力测试

目录 webbench是linux上一款知名的优秀的web性能压力测试工具。 测试处在相同硬件上&#xff0c;不同服务的性能以及在不同硬件上同一个服务的运行状况 展示服务器的两项内容&#xff1a;每秒钟响应请求数和每秒钟传输数据量 webbench首先fork多个子进程&#xff0c;每个子进程…

MySQL数据库基础(一) MySQL安装及数据类型

目录 一、MySQL数据裤简介 二、MySQL数据的安装 2.1、MySQL安装 2.2、修改MySQL密码登录策略 三、数据库基础管理 3.1、连接方式及数据储存流程 3.2、库管理命令 3.3、表管理命令 3.4、记录管理命令 四、MySQL数据类型 4.1、常见信息种类 4.2、字符型 4.3、数值型 4.4、日期时间…

好用的远程控制安卓和IOS端的手机软件有哪些?

在数字化时代&#xff0c;我们的工作和娱乐活动越来越依赖于移动设备。无论是在家中、办公室还是旅途中&#xff0c;能够远程控制我们的设备成为了一种高效便捷的需求。市场上涌现出了许多远程控制软件&#xff0c;它们各具特色&#xff0c;旨在提供最佳的用户体验。那么&#…

领夹无线麦克风哪个牌子好?双十一选无线领夹麦克风避开选购陷阱

在多媒体和远程通信日益普及的今天&#xff0c;无线领夹麦克风已成为提升音质和便利性的关键&#xff0c;它们在视频制作、网络直播、在线教育等多个领域中扮演着重要角色。面对市场上众多的产品和技术参数&#xff0c;消费者往往感到无从下手。不过不用过于担心&#xff0c;在…

开发中使用UML的流程_01概述

目录 CIM-1:定义业务流程 CIM-2:分析业务流程 ​CIM-3:定义系统范围 ​PIM-1:分析系统流程 PIM-2:分析业务规则 PIM-3:定义静态结构 PIM-4:定义操作和方法 开发中使用UML的流程,主要分为7部分,具体如下: CIM-1:定义业务流程 定义及分析业务流程是为了尽快理…

ArcGIS/QGIS按掩膜提取或栅格裁剪后栅格数据的值为什么变了?

问题描述&#xff1a; 现有一栅格数据&#xff0c;使用ArcGIS或者QGIS按照矢量边界进行按掩膜提取或者栅格裁剪以后&#xff0c;其值的范围发生了变化&#xff0c;如下&#xff1a; 可以看到&#xff0c;不论是按掩膜提取还是进行栅格裁剪后&#xff0c;其值的范围均与原来栅…

劫持微信聊天记录并分析还原 —— 合并解密后的数据库(三)

本工具设计的初衷是用来获取微信账号的相关信息并解析PC版微信的数据库。 程序以 Python 语言开发&#xff0c;可读取、解密、还原微信数据库并帮助用户查看聊天记录&#xff0c;还可以将其聊天记录导出为csv、html等格式用于AI训练&#xff0c;自动回复或备份等等作用。下面我…

python数据结构基础(7)

本节学习最后一种数据结构---图,在很多问题中应用图可以帮助构建思维空间,快速理清思路,解决复杂问题. 图就是一些顶点的集合,这些顶点通过一系列边链接起来.根据边的有向和无向,图分为有向图和无向图.有时图的边上带有权重,本节暂时不将权重作为重点. 计算机通过邻接表或者邻…

NAS的软件和生态才是王道!谈谈群晖是如何凭实力“躺平”的

NAS的软件和生态才是王道&#xff01;谈谈群晖是如何凭实力“躺平”的 哈喽小伙伴们好&#xff0c;我是Stark-C~ 近几年随着大家对于数据存储和管理需求的增加&#xff0c;以及各大网盘变相收费和涨价&#xff0c;并且还不合时宜的爆出隐私泄露问题。而NAS&#xff08;网络附…

阅读笔记 Contemporary strategy analysis Chapter 14

来源&#xff1a;Robert M. Grant - Contemporary strategy analysis (2018) Chapter 14 External Growth Strategies: Mergers, Acquisitions, and Alliances 合并、收购和联盟 Ⅰ Introduction and Objectives 企业并购与联盟是公司实现快速扩张的重要战略工具。通过这些手段…

Java 8 Stream API 详解

在 Java 8 中&#xff0c;引入了一个全新的 API——Stream API&#xff0c;它与传统的 java.io 包下的 InputStream 和 OutputStream 没有任何关系。Stream API 的引入主要是为了提高程序员在操作集合&#xff08;Collection&#xff09;时的生产力&#xff0c;而这一提升很大程…

VMware替代实战手册:更高效的MySQL数据库迁移方案

数据库作为数字化用户的核心资产&#xff0c;其迁移是一项复杂且重要的任务&#xff0c;特别是在VMware平台替换及IT基础设施更新换代之时&#xff0c;尤其需要保障数据库迁移过程的平稳、流畅。 深信服推出的数据库管理平台&#xff08;DMP&#xff09;是为关系型数据库量身打…

GaussDB高智能--库内AI引擎:模型管理数据集管理

3.2 模型管理 在机器学习算法进行训练后&#xff0c;生成的模型需要进行存储&#xff0c;以便后续推理进行使用。训练过程的时序图如下&#xff1a; 在训练过程中&#xff0c;最后一步是通过调用store_model接口&#xff0c;在系统表gs_model_warehouse中插入一条记录&#…

使用ookii-dialogs-wpf在WPF选择文件夹时能输入路径

在进行WPF开发时&#xff0c;System.Windows.Forms.FolderBrowserDialog的选择文件夹功能不支持输入路径&#xff1a; 希望能够获得下图所示的选择文件夹功能&#xff1a; 于是&#xff0c;通过NuGet中安装Ookii.Dialogs.Wpf包&#xff0c;并创建一个简单的工具类&#xff1a; …

求助帖【如何学习核磁共振的原理】

最近提前进组了 我完全不懂磁共振的相关知识 想问问各位大佬有没有推荐的学习路线 或者是学习资料、论坛都可以的&#xff08;我做的方向是磁共振成像技术&#xff09; 老师给了一本书&#xff0c;但是有点看不懂&#xff0c;全英文的 叫Principles Of Magnetic Resonance …

【自动化测试】如何在jenkins中搭建allure

相信大家在做自动化测试过程中&#xff0c;都会用到自动化测试环境&#xff0c;目前最常见的就是通过容器化方式部署自动化测试环境&#xff0c;但对于一些测试小白&#xff0c;不是很会搭建持续集成环境&#xff0c;特别是从0-1的过程&#xff0c;需要自行搭建很多依赖环境&am…

人才流失预测模型(机器学习)

1. 项目描述 ​ 企业的快速发展离不开人才的支撑&#xff0c;可是现在我国的企业的人才流失严重&#xff0c;人才流失问题现在已经成为了关系企业发展的一个重大的问题。这些企业要想在目前激烈的竞争中快速发展&#xff0c;就需要依靠自身的人力资源的来竞争。只有拥有比对方…

【Mac】安装 VMware Fusion Pro

VMware Fusion Pro 软件已经正式免费提供给个人用户使用&#xff01; 1、下载 【官网】 下拉找到 VMware Fusion Pro Download 登陆账号 如果没有账号&#xff0c;点击右上角 LOGIN &#xff0c;选择 REGISTER 注册信息除了邮箱外可随意填写 登陆时&#xff0c;Username为…