题目

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

7766 – 6677 = 1089

9810 – 0189 = 9621

9621 – 1269 = 8352

8532 – 2358 = 6174

7641 – 1467 = 6174

… …

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

输⼊格式:

输⼊给出⼀个(0, 10000)区间内的正整数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

题目分析

已知一个最多有4位的整数N,对N降序排列-对N升序排列=下一次的整数N,循环处理直到N=6174为止,打印其处理过程(特殊情况:如果N的4位数字相同,打印并退出处理)

解题思路

  1. 用字符串接收整数s,并用0左边补齐整数到4位
  2. a=s,b=s,a降序排列后转为数字an,b升序排列转为数字bn
  3. bn-an即为下次处理的整数

易错点

  1. 若输入的数字为6174,需要打印7641 - 1467 = 6174(否则测试点5错误)(建议使用do...while可以省去针对开始输入为6174的单独处理)

知识点

  1. 字符串中字符排序

    sort(s.begin(),s.end(),cmp);
  2. 利用字符串操作对齐整数

    2.1 右对齐。如:4位对齐,输入1,要求得到"0001";输入11,要求得到"0011"

    s.insert(0,4-s.length,'0');

    2.2 左对齐。4位对齐,输入1,要求得到"1000",输入11,要求得到"1100"

    s.insert(s.length,4-s.length,'0');

Code

Code 01

#include <iostream>
#include <algorithm>
using namespace std;
bool cmp(char a, char b) {
return a>b;
}
int main(int argc, char * argv[]) {
string s,a,b;
cin>>s;
s.insert(0,4-s.length(),'0');
do {
a=s,b=s;
sort(a.begin(),a.end(),cmp);
sort(b.begin(),b.end());
int res = stoi(a)-stoi(b);
s=to_string(res);
s.insert(0,4-s.length(),'0');
cout<<a<<" - "<<b<<" = "<<s<<endl;
} while(s!="6174"&&s!="0000"); return 0;
}

PAT Basic 1104 数字⿊洞 (20) [数学问题-简单数学]的更多相关文章

  1. PAT Basic 1012 数字分类 (20 分)

    给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: A​1​​ = 能被 5 整除的数字中所有偶数的和: A​2​​ = 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n ...

  2. PAT Basic 1019 数字黑洞 (20 分)

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

  3. PAT Basic 1048 数字加密 (20 分)

    本题要求实现一种数字加密方法.首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对 13 取余——这里用 J 代表 ...

  4. PAT Basic 1057 数零壹 (20 分)

    给定一串长度不超过 1 的字符串,本题要求你将其中所有英文字母的序号(字母 a-z 对应序号 1-26,不分大小写)相加,得到整数 N,然后再分析一下 N 的二进制表示中有多少 0.多少 1.例如给定 ...

  5. PAT乙级 1019. 数字黑洞 (20)

    1019. 数字黑洞 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定任一个各位数字不完全相同的4位 ...

  6. PAT乙级 1012. 数字分类 (20)

    1012. 数字分类 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一系列正整数,请按要求对数字进 ...

  7. [C++]PAT乙级1012.数字分类 (20/20)

    /* 1012. 数字分类 (20) 给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字: A1 = 能被5整除的数字中所有偶数的和: A2 = 将被5除后余1的数字按给出顺序进行交错求和, ...

  8. PAT 乙级 1019 数字黑洞 (20) C++版

    1019. 数字黑洞 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定任一个各位数字不完全相同的4位 ...

  9. PAT 乙级 1048 数字加密(20) C++版

    1048. 数字加密(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求实现一种数字加密方法.首先固 ...

随机推荐

  1. module已经装了但仍提示找不到的解决方法

    今天遇到的问题:(这里只是个例子) 解决方法: npm clean cache --force 删了node_modules 和 package-lock ,然后npm install 如果再不行,看 ...

  2. jQuery中:first,:first-child,first()的使用区别

    ul li:first  先获取页面中所有li节点对象数组,然后返回数组中的第一个li节点对象 . :first-child  选择器选取属于其父元素的第一个子元素的所有元素. first() 返回被 ...

  3. Windows2008R2安装DNS和SQLServer200r2服务 (9.18第七天)

    原文网址:https://www.cnblogs.com/yankaohaitaiwei/p/11538205.html 二.IIS搭建web服务器 1.格式化D盘,一定要选择NTFS!!!不然后面添 ...

  4. 【LeetCode】跳跃游戏II

    [问题]给定一个非负整数数组,你最初位于数组的第一个位置.数组中的每个元素代表你在该位置可以跳跃的最大长度.你的目标是使用最少的跳跃次数到达数组的最后一个位置. 示例: 输入: [,,,,] 输出: ...

  5. Citrix 更新Vcenter 地址

    背景:Vcenter崩溃,重新部署了一套,还是使用原有的IP地址,部署完成后Citrix无法发布虚拟机 解决方案 1.Web访问Vcenter提示证书报错,安装证书,位置计算机>个人2.以管理员 ...

  6. gogs 升级

    可以使用 go get -u github.com/gogs/gogs 来升级,但是因为网络原因,这种升级方式失败了.另外一种是在 github 或者 gitee 上面直接下载源码,然后解压到 $GO ...

  7. 浅谈__slots__

    __slots__在python中是扮演属性声明(Attribute Declaration)的角色,当然属性本身不用声明,只需要在使用前赋值即可,但是实际上,属性的应用远非在使用前赋值就行,所以有a ...

  8. consul生产实战

    pwd:/home/appadmin wget https://releases.hashicorp.com/consul/1.6.1/consul_1.6.1_linux_amd64.zip unz ...

  9. C# 互操作性入门系列(三):平台调用中的数据封送处理

    好文章搬用工模式启动ing ..... { 文章中已经包含了原文链接 就不再次粘贴了 言明 改文章是一个系列,但只收录了2篇,原因是 够用了 } --------------------------- ...

  10. (BUILDER)建造者与(FACTORY)工厂模式 的比较

    首先,说明下 参考博文 1.   建造者      http://www.cnblogs.com/zhili/p/BuilderPattern.html 2.   抽象工厂    http://www ...