博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法学习之路|数字黑洞
阅读量:5923 次
发布时间:2019-06-19

本文共 1376 字,大约阅读时间需要 4 分钟。

给定任一个各位数字不完全相同的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
我的思路

int(reverse(string(C)))-int(string(C))

int()用字符流转化即可。

#include
#include
#include
#include
#include
using namespace std;bool cmp(int b,int a){ if(a
>n; stringstream buff; string a,b; if(n<10) //bug if 3332 or 1, or 2,is mistake buff<<0<<0<<0; else if(n<100) buff<<0<<0; else if(n<1000) buff<<0; buff<
>a; b=a; sort(a.begin(), a.end()); sort(b.begin(), b.end(),cmp); int x,y; istringstream xys(a+" "+b);//deque xys>>x>>y; n=y-x; printf("%04d - %04d = %04d\n",y,x,n); if(n==0){ return 0; } while(n!=6174){ buff.clear(); if(n<10) //bug if 3332 ,is mistake buff<<0<<0<<0; else if(n<100) buff<<0<<0; else if(n<1000) buff<<0; buff<
>a; b=a; sort(a.begin(), a.end()); sort(b.begin(), b.end(),cmp); buff<
<<" "<
>x>>y; n=y-x; printf("%04d - %04d = %04d\n",y,x,n); } return 0;}

转载地址:http://gssvx.baihongyu.com/

你可能感兴趣的文章
java虚拟机学习笔记 【1】
查看>>
DUBBO笔记
查看>>
scala基础续
查看>>
nginx php上传大文件的设置(php-fpm)
查看>>
MySQL 运行状态监控方法
查看>>
Fedora 12 环境下Gtk+开发环境配置
查看>>
vs2008中在解决方案资源管理器查看当前打开文件
查看>>
ubuntu14.04 鼠标闪烁问题
查看>>
jQuery Lightbox(balupton版)图片展示插件demo
查看>>
Elasticsearch集群的简单搭建
查看>>
SCRT-SSH传输文件
查看>>
VOA 26/02/2009 EDUCATION REPORT - Studying in the US: Web Redefines the College Visit
查看>>
缓冲池相关
查看>>
foxmail A message does not have receiver解决方法
查看>>
slidingMenu
查看>>
AngularJS之控制器
查看>>
PIC32多媒体开发板
查看>>
禁止搜索引擎转码方法
查看>>
l洛谷——P1211 [USACO1.3]牛式 Prime Cryptarithm
查看>>
域模式中批量创建用户
查看>>