1019. 数字黑洞 (20)
2016-05-28 11:44
337 查看
1019. 数字黑洞 (20)
时间限制 100 ms内存限制 65536 kB
代码长度限制 8000 B
判题程序 Standard
作者 CHEN, Yue
给定任一个各位数字不完全相同的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
分解重组
#include <iostream> #include <algorithm> #include <cmath> #include <cstdio> #include <cstring> #include <cctype> using namespace std; int N; void solve() { int A, B, C = N; do{ int a[4]; for(int i = 0; i < 4; i ++){ a[i] = C % 10; C /= 10; } sort(a, a + 4); A = B = 0; for(int i = 0; i < 4; i ++){ A = A*10 + a[3 - i]; B = B*10 + a[i]; } C = A - B; printf("%04d - %04d = %04d\n", A, B, C); }while(C != 6174 && C != 0); } int main() { cin >> N; solve(); return 0; }
相关文章推荐
- 哈理工OJ 1986 大悲咒(简单递推)
- 第十一周项目1(2)
- 比较两个实例对象是否相同的方法
- Android音频开发(5):音频数据的编解码
- iOS学习- 02 控件
- Java中String、StringBuffer、StringBuilder的区别及面试经常出现的问题
- 浅谈jQuery 中的事件冒泡和阻止默认行为
- Android音频开发(4):如何存储和解析wav文件
- css备忘录(关于relative、absolute)
- 2016.05.24工作内容
- 2dx-lua图片局部置灰
- [leetcode] 【数组】73. Set Matrix Zeroes
- 对于高并发,高流量的网站问题,请描述用什么技术方法...
- 并行、并发、同步、互斥
- SSL构建单双向https认证!https部署及注意事项!
- Android进阶专题三:NDK Makefile
- Java并发编程之java.util.concurrent包UML结构
- 深入Java 1.5枚举类型的内部实现原理
- Error building results for action sayHello in namespace /inteceptor -
- php时间函数用法分析