Basic Level 1019 数字黑洞 (20分)

2023-10-29

题目

给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的 6174,这个神奇的数字也叫 Kaprekar 常数。

例如,我们从6767开始,将得到

7766 - 6677 = 1089
9810 - 0189 = 9621
9621 - 1269 = 8352
8532 - 2358 = 6174
7641 - 1467 = 6174
... ...

现给定任意 4 位正整数,请编写程序演示到达黑洞的过程。

输入格式:

输入给出一个 ( 0 , 1 0 4 ) (0,10^4) (0,104) 区间内的正整数 N。

输出格式:

如果 N 的 4 位数字全相等,则在一行内输出 N - N = 0000;否则将计算的每一步在一行内输出,直到 6174 作为差出现,输出格式见样例。注意每个数字按 4 位数格式输出。

输入样例1:

6767

输出样例1:

7766 - 6677 = 1089
9810 - 0189 = 9621
9621 - 1269 = 8352
8532 - 2358 = 6174

输入样例2:

2222

输出样例2:

2222 - 2222 = 0000

思路分析:

  1. 通过string头文件中的insert往前补零,sort排序,reverse倒序字符串,stoi将字符串转换为int类型,to_string将int类型转换为string类型。

代码:

#include <bits/stdc++.h>
using namespace std;
int main(){
    string s, a, b;
    cin >> s;
    s.insert(0, 4 - s.length(), '0');
    do{
        b = s;
        sort(b.begin(), b.end());
        a = b;
        reverse(a.begin(), a.end());
        s = to_string(stoi(a) - stoi(b));
        s.insert(0, 4 - s.length(), '0');
        cout << a << " - " << b << " = " << s << endl;
    }while(s != "6174" && s != "0000");
    return 0;
}

PAT_BasicLevel

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Basic Level 1019 数字黑洞 (20分) 的相关文章

  • 分支-07. 比较大小(10)

    本题要求将输入的任意3个整数从小到大输出 输入格式 输入在一行中给出3个整数 其间以空格分隔 输出格式 在一行中将3个整数从小到大输出 其间以 gt 相连 输入样例 4 2 8 输出样例 2 gt 4 gt 8 程序 include int
  • 吃透Chisel语言.15.Chisel模块详解(二)——Chisel模块嵌套和ALU实现

    Chisel模块详解 二 Chisel模块嵌套和ALU实现 稍微复杂点的硬件设计就需要用嵌套的模块层级来构建了 上一篇文章中实现的计数器其实就是个例子 计数器内部嵌套了一个寄存器 一个Mux和一个加法器 这一篇文章就仔细讲解模块之间是怎么连

随机推荐

  • 结构体注入VS setter 注入

    结构体注入 setter注入是比较常用的依赖注入方式 都有各自的优缺点 setter注入是Spring推荐的依赖注入方式 首先结构体注入有什么问题 1 不能重新配置和重新注入 在Spring参考文档 中基于结构体注入和setter注入有以下
  • 利用visual studio 2017创建mfc程序,来输出hello world。

    1 点击文件 选择新建 再点击项目 2 选择visual C 选择MFC应用 位置和名称根据需要可适当更改 再点击创建 如果没有MFC应用 需要在工具那里点击获取工具和功能 3 在单个组件里面添加关于MFC的组件 4 进入以下视图 5 点击
  • 深度学习笔记 —— 批量归一化

    梯度在上面 损失处 的时候比较大 越到下面越容易变小 因为很多时候都是n个很小的数相乘 乘到最后梯度就比较小了 所以就导致上面参数更新快 而下面参数更新慢 下面参数在小范围内变化时 抽取的底层特征变化不大 此时上层的参数是针对这些底层特征进
  • pyaudio安装过程中出现Error: failed building wheel for pyaudio(其实正常安装portaudio就能解决)

    pyaudio安装过程中出现Error failed building wheel for pyaudio 问题发生与解决过程 发现问题 安装pyudio 寻找解决问题的方法 定位依赖包 解决问题 安装portaudio19 dev 新问题
  • CGSS2015问卷数据STATA重编码命令(部分)

    今天在写论文时处理的CGSS数据 保存下来以待以后用 选取城市样本 drop if s1 2 选取18 45岁的样本 drop if a301 gt 1997 drop if a301 lt 1970 计算年龄 gen nianling 2
  • Qt Creator下载和安装(详细教程)

    简介 Qt是跨平台的图形开发库 目前由Digia全资子公司 Qt Company 独立运营 官方网址 http www qt io 也可以访问Qt项目域名 http qt project org Qt本身支持众多操作系统 从通用操作系统Li
  • 为什么下载pytorch时,总是下载cpu版本,而不是gpu版本?

    首先 查看一下自己cuda与cudnn版本 创建的虚拟环境python版本 我的python3 10 cuda 11 2 cudnn8 0 因为我们下载都是通过清华源下载的 所以 当清华源里面 没有我们指定python3 10 cuda 1
  • video 标签设置样式

    设置video标签的默认样式 在这里插入图片描述 全屏按钮 video webkit media controls fullscreen button display none 播放按钮 video webkit media control
  • 算法导论

    好像在豆瓣上看到一句话 算法导论之所以经典 是因为它选取的算法每个都是常用的 是精中选精 于是我就有了重读算法导论的冲动 自己非计算机科班出身 所以对于算法这个基础真的比较薄弱 虽然学过算法 但是基础真的太差了 再说学习算法完全是为了锻炼思
  • Java卸载删除(2023最强版)

    Java卸载删除 2023最强版 卸载程序 删除相关环境变量 删除编辑注册表相关 检查C盘相关文件是否删除 收尾 看了网上很多教程 结果还是提示没卸载干净 做了以下整理 希望对大家有所帮助 卸载程序 在应用和功能中 或控制面板的卸载程序中卸
  • Openssl-AES加密

    AES加密算法 此次介绍AES两种加密算法 其他的暂不使用 1 ECB模式 按照块密码的块大小被分为数个块 并对每个块进行独立加密 优点 1 简单 2 有利于并行计算 3 误差不会被传送 缺点 1 不能隐藏明文的模式 2 可能对明文进行主动
  • 解析和校验Flink SQL语句

    Flink对SQL的支持是基于Apache Calcite实现的 且Flink包中集成了Apache Calcite 所以我们可以直接调用Flink包中的SQL解析类 来解析和校验我们的Flink SQL语句 import org apac
  • kettle--数据库间的数据迁移工具

    一 kettle介绍 kettle 是纯 java 开发 开源的 ETL工具 用于数据库间的数据迁移 可以在 Linux windows unix 中运行 有图形界面 通过图形化界面的配置 可以实现数据迁移 并不用开发代码 也有命令脚本还可
  • CTFShow web入门题刷题记录

    CTFShow web入门题刷题记录 信息搜集 web1 提示 开发注释未及时删除 打开网页查看源代码发现 flag flag 2b2cf8e3 f880 41e1 a8ff 02601b3d998f web2 提示 js前台拦截 无效操作
  • Linux安全--iptables详解

    目录 1 iptables介绍 2 iptables四表五链详解 3 iptables基本语法 4 实际操作 4 1 增加规则 4 2 删除规则 4 3 修改规则 5 命令语法总结 6 基本匹配条件 7 iptables进阶用法 7 1 i
  • 一个Debug版本不崩而Release版本可能崩的问题

    引子 今天一个朋友在QQ上向我求助 说他的一个MFC程序用VS2013编译生成的Debug版本运行正常 而编译生成的Release版本却在启动后还没出现界面便崩溃了 经过一番折腾之后 通过调试找到了崩溃点 但却根本不像是崩溃在这儿 因为崩溃
  • Struts标签基本知识

    Struts标签基本知识 1 普通标签 控制执行的流程 1 1 控制标签 实现分支 循环等流程控制 if elseif else append generator iterator merge sort subset 1 2 数据标签 输出
  • 区块链-密码学与安全技术

    密码学与安全技术 工程领域从来没有黑科技 密码学不仅是工程 密码学相关的安全技术在整个信息技术领域的重要地位无需多言 如果没有现代密码学和信息安全的研究成果 人类社会根本无法进入信息时代 区块链技术大量依赖了密码学和安全技术的研究成果 实际
  • C++基础知识 - 函数返回引用深度解析

    函数返回引用深度解析 C 引用使用时的难点 当函数返回值为引用时 若返回局部变量 不能成为其它引用的初始值 不能作为左值使用 返回静态变量 或 全局变量的引用 可成为其他引用的初始值 也可以作为左值 也可作为右值 返回函数的普通形参作为引用
  • Basic Level 1019 数字黑洞 (20分)

    题目 给定任一个各位数字不完全相同的 4 位正整数 如果我们先把 4 个数字按非递增排序 再按非递减排序 然后用第 1 个数字减第 2 个数字 将得到一个新的数字 一直重复这样做 我们很快会停在有 数字黑洞 之称的 6174 这个神奇的数字