c++习题29-大整数的因子

news2024/9/20 18:47:33

目录

一,题目

二,思路

三,代码


一,题目

描述

已知正整数k满足2≤k≤9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k。

输入描述

一个非负整数c,c的位数≤30。

输出描述

若存在满足 c%k == 0 的k,从小到大输出所有这样的k,相邻两个数之间用单个空格隔开;若没有这样的k,则输出"none"。

用例输入 1 

30

用例输出 1 

2 3 5 6

二,思路

  1. 根据题目输入要求:输入一个非负整数c,c的位数≤30,可以看到输入的是一个很大的整数,超出了标准数据类型的范围,需要使用其它变量存储,例如:vector容器和string类,这里推荐使用string类,因为需要输入一行整数,string类可以直接使用一条语句cin输入就行。因此需要定义一个string类型的字符串变量s:string  s;  之后使用输入流对象cin 从键盘输入获取数据:cin>>s;   这里我输入  12345
  2. 根据题目输出要求:如果输入的整数能够整除k (k\in [2,9])  中的数(可以是多个),就需要从小到大输出所有这样的k,若没有这样的k,则输出"none"。因此,我想到的就是给一个布尔类型的变量 no  来存储 该整数没有这样的k ,既 bool  no=true; (小旗子立着)默认这个整数 确实 在 k\in [2,9]  这个区间内没有因子。中间的程序用来处理这个整数(判断该整数是否在指定区间内有因子,有因子,则将变量 no 赋值为  false :该整数有因子)。因此,第二步可以在程序的末尾写上代码 if(no)  cout<<"none";  既,经过了中间代码的判断,no 依旧是true ,则表示该整数在指定区间内没有因子,输出字符串"none"。
  3. 现在开始编写处理整数的代码:
    1) 可以放置一个外层循环,依次取到 k 所有取值  k\in [2,9]  ,既 for(int k=2;k<=9;k++)
    2)
    ①  之后从字符串的第一位开始依次取出里面的字符for(char d:s),可以遍历出存储大整数的字符串中的所有字符:‘1’,‘2’,‘3’,‘4’,‘5’。
    ②  将每一次取出的字符减去字符零 '0'得到该字符所显示数字的整数形式,例如‘1’-‘0’=1,  ‘2’-‘0’=2 ,之后再随着外层循环中 k 的变化依次模 k的所有取值 ,将结果使用变量 r  存储(虽然需要存储的数值没有超出标准数据类型的范围,但是数值较大,建议用超长整数类型long  long 存储),并且,该变量 r 需要定义在外层循环和从字符串中取字符的中间(例如,第一次判断该整数是否能够整除2 ,如果不能,就将 结果 r 置零,接着判断能否整除3....一直到 k=9 ),并且, 后一个字符的计算结果与前一个字符的计算结果有关:
    ·  输入12345。第一个一个字符 '1' 不能被 2 整除(这里以k=2为例,也可以代入3.....9),r=(‘1’-‘0’)% 2 =1%10=1,1 不能整除 2,此时r=1,接着判断第二个字符'2',r=('2'-'0')% 2=0
    但是,这里有问题,如果按照  r=( c - '0' ) % k ;的想法来判断的话,只能判断末尾的数字是否能够被 k\in [2,9] 整除,上面的12 能够被2整除,也能够被3整除,但12 的结尾是2,2不能整除3 ,3这个因子被排除掉了,例如 像 12345,按照这种计算,最后只有一个因子  5 ,但是正确答案是  3 和 5这两个因子,因为对于3来说,如果该整数的每一位相加得到的结果能够整除3,那么这个整数即使不是3的倍数结尾的,它也是 3 的倍数(3是 该整数 的因子),12345每一位相加:1+2+3+4+5=3+7+5=15,  15%3=0;
    ·  因此,需要对   r=( c - '0' ) % k ; 进行修改,如果 12 的第一个字符 ‘1’ 不能整除3 ,r=1,到第二个字符的时候 ,就将之前的 r=1 保留,将它乘 10,加上第二个字符的 ‘2’,r=(r*10+('c'-'0'))%3=(1*10+'2'-'0')%3=(10+2)%3=12%3=0,这种判断才对,如果有三位数,则继续乘10(字符有多少个,就会执行多少次)
    3) 通过第二步的计算(内层的for循环结束),可以知道 该大整数能否被 对应的 k
    ( k\in [2,9]),既  遍历整个字符串之后 ,如果r ==0,那么就表示该大整数能够被对应的 k 整除,直接使用cout输出对应的 k ,并且将默认该整数没有因子的变量  no  赋值 为  false (小旗子倒下) ,表示该大整数有因子,程序不需要再输出“none”。

三,代码

#include <bits/stdc++.h>
using namespace std;
int main() {
    string s;
    cin>>s;
    bool no=true;
    for (int k=2;k<=9;k++) {
        long long r=0;
        for(char c:s){
            r=(r*10+(c-'0'))%k;
        }
        if(r==0){
            cout<<k<<" ";
            no=false;
        }
    }
    if (no)  cout<<"none";
    return 0;
}

有问题请在评论区留言或者是私信我,回复时间不超过一天。 

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

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

相关文章

开学要买什么?出门少不了续电神器充电宝!性价比超高充电宝

宝子们&#xff0c;开学季又来啦&#xff01;新的学期&#xff0c;新的开始&#xff0c;大家是不是都在忙着准备各种学习用品和生活好物呢&#xff1f;在众多开学必备物品中&#xff0c;有一个东西可千万不能忘记&#xff0c;那就是我们的续电神器 —— 充电宝&#xff01;出门…

chrome插件模拟isTrusted的事件

文章目录 方法原理 使用js模拟的事件isTrusted的值时false。有的时候我们想要模拟sTrusted未true的事件就比较麻烦了。 我们可以利用chrome插件的 chrome.debugger解决改问题。 方法 大体思路是&#xff1a;模拟事件的请求从content_script.js发出&#xff0c;到达background…

通过 GitHub Actions 执行数据库 Schema 变更工作流

原文地址 https://www.bytebase.com/docs/tutorials/github-ci/ 教程库&#xff1a;https://github.com/bytebase/github-action-example 开发者们喜欢将 Schema 变更脚本与应用程序代码一起保存在 Git 中&#xff0c;这样变更脚本就能像应用程序代码一样接受审核和版本控制&…

2024年06月 C/C++(六级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里 第1题:区块反转 给定一个单链表 L,我们将每 K 个结点看成一个区块(链表最后若不足 K 个结点,也看成一个区块),请编写程序将 L 中所有的区块链反转。例如:给定 L 为 1→2→3→4→5→6→7→8,K 为 3,则输出应该为 7→8→4→5→6→1→…

百度地图绘制电子围栏(包括移动端绘制操作)以及检测坐标是否在电子围栏内

由于本人在PC端仅使用了多边形绘制&#xff0c;但矩形跟多边形用法基本一样&#xff0c;圆形并未使用&#xff0c;如不符合读者需求也可以参考一下。 绘制后得到的数据可能不同&#xff0c;但绘制方法仅仅是传递的参数不同。 关于给坐标数组在地图绘制图形的效果在移动端部分包…

【读书笔记-《30天自制操作系统》-14】Day15

本篇内容开始讲解多任务。本篇内容结构很简单&#xff0c;先讲解任务切换的原理&#xff0c;再讲解任务切换的代码实践。但是涉及到的知识不少&#xff0c;理解上也有些难度。 1. 任务切换与多任务原理 1.1 多任务与任务切换 所谓多任务&#xff0c;指的是操作系统同时运行多…

ambari-hdp启动yarn报错Corruption: checksum mismatch

ambari-hdp启动yarn报错Corruption: checksum mismatch 页面报错 Traceback (most recent call last):File "/var/lib/ambari-agent/cache/stacks/HDP/3.0/services/YARN/package/scripts/nodemanager.py", line 102, in <module>Nodemanager().execute()Fil…

万字文档带你走进Python的世界

目录 Python基本使用语法 老生常谈 Python中的注释 Python变量 定义变量 变量类型 Python变量的特点 Python中的输入与输出 Python中的运算符 算术运算符 /和// **运算符 关系运算符 逻辑运算符 赋值运算符 Python运算符优先级 Python分支语句 if语句和if-else语句 if-else if-…

Java | Leetcode Java题解之第386题字典序排数

题目&#xff1a; 题解&#xff1a; class Solution {public List<Integer> lexicalOrder(int n) {List<Integer> ret new ArrayList<Integer>();int number 1;for (int i 0; i < n; i) {ret.add(number);if (number * 10 < n) {number * 10;} els…

Datawhale X 李宏毅苹果书 AI夏令营

文章目录 我认为苹果书是最好的深度学习原理教材 第三章开篇讲的就是为什么深度学习模型会优化失败&#xff0c;这个问题其它在我们训练深度学习模型的过程中是非常常见的一种现象&#xff1a;明明使用了更加深层的结构&#xff0c;但它的表现与之前一样&#xff0c;有时甚至不…

企业IT服务管理(ITSM)的实践与探索

随着信息技术的飞速发展&#xff0c;企业对IT服务管理&#xff08;ITSM&#xff09;的需求也日益增长。在这个背景下&#xff0c;某大型集团&#xff08;以下简称“该机构”&#xff09;逐步构建了完善的IT服务管理体系&#xff0c;其发展历程和实践经验对于广大运维团队而言&a…

OceanBase V4.2解析:如何用迭代器 Generator快速生成任意数据

前言 OceanBase 4.2 版本新增了迭代器 generator 函数。尽管这一功能在数据库领域中已属于通用能力&#xff0c;postgresql 也提供了类似的函数&#xff0c;然而&#xff0c;与MySQL和Oracle数据库在默认情况下是需要用户额外编写函数来实现的。OceanBase 4.2 的这一更新也是满…

鸿蒙(API 12 Beta6版)图形【AR物体摆放】 AR引擎服务

概要 本章节通过AR Engine识别设备周围的平面&#xff0c;并允许用户在平面上放置虚拟物体&#xff0c;实现虚拟和现实的融合。AR物体摆放可用于虚拟家具、数字展厅等应用&#xff0c;给用户提供虚实结合的新体验。通过本示例&#xff0c;您可以学习并掌握如何使用AR Engine开…

刷题记录(2)

1. HWOD机试 - 模拟消息队列(100) package com.yue.test;import org.junit.Test;import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util.List;/*** Author: 夜雨* Date: 2021-12-08-10:31* Description:* Version 1.0*/ public…

C#编译成32和64位的区别

C#编译成32和64位的区别 背景 C#32位客户端项目在把代码提交到客户端之后&#xff0c;jinkens直接崩掉了。原因是内存占用100%运维同学建议改成64位&#xff0c;理由是电脑内存大&#xff0c;客观条件IT不给扩。那么在同一台电脑上&#xff0c;32位和64位在编译过程中有什么区…

【DEV工具-IDEA】idea的光标变成黑块了?

项目场景&#xff1a; 解决&#xff1a;windows&#xff1a;按一下insert键。

Python获取次幂数据公众号榜单数据

公众号排行榜,wx公众号排行榜,原创排行榜,赞赏排行榜,评论排行榜 教程仅供参考,请勿滥用,由此带来的法律责任,需由自己承担。 一、运行效果 二、程序代码 #!/usr/bin/python # -*- coding: UTF-8 -*- """ @author: Roc-xb """import request…

Java学习第六天

Java进阶知识面向对象 static&#xff1a;是静态的意思&#xff0c;可以修饰成员变量&#xff0c;表示该成员变量在内存中只存储一份&#xff0c;可以被共享访问。 静态成员变量&#xff08;有static修饰&#xff0c;属于类&#xff0c;内存中加载一次&#xff09;&#xff1a…

三元里等你!融合三个经典模型!Transformer-LSTM-SVM多变量时间序列预测(Matlab)

三元里等你&#xff01;融合三个经典模型&#xff01;Transformer-LSTM-SVM多变量时间序列预测&#xff08;Matlab&#xff09; 目录 三元里等你&#xff01;融合三个经典模型&#xff01;Transformer-LSTM-SVM多变量时间序列预测&#xff08;Matlab&#xff09;效果一览基本介…

I2C总线的标准收发代码

结合I2C总线协议的知识&#xff0c;我们可以知道I2C写数据由一下10个步骤组成。 第一步&#xff0c;发送一个起始信号。 第二步&#xff0c;发送7bit从机地址&#xff0c;即OZ9350的地址。此处需要注意&#xff0c;发送数据时&#xff0c;无法发送7bit数据&#xff0c;此处发…