算法竞赛入门——6174问题
2017-08-14 13:44
92 查看
假设你有一个各位数字互不相同的4位数,吧所有数字从大到下排序后得到a,从小到大排序后得到b,然后用a-b替换原来这个数,并且继续操作。 输入一个n位数,输出操作序列,直至循环结束(即新得到的数曾经得到过)。输入保证在循环之前最多只会产生1000个整数。 输入样例:1234 输出样例:1234->3087->8352->6174->6174
代码如下:
#include <iostream> #include <stdio.h> #include <string.h> using namespace std; int fun(int x) { char a[10]; sprintf(a, "%d", x); int len = strlen(a); for (int i = 0; i < len; i++) { for (int j = i + 1; j < len; j++) if ((a[i])>(a[j])) { char temp = a[j]; a[j] = a[i]; a[i] = temp; } } int b; sscanf(a, "%d", &b); for (int i = 0; i < len / 2; i++) { char temp = a[i]; a[i] = a[len - 1 - i]; a[len - 1 - i] = temp; } int c ; sscanf(a, "%d", &c); return c - b; } int main() { int a; int x, s[1000], i = 0; memset(s, 0, sizeof(s)); cin >> a; cout << a; while (1) { int flag = 1; x = fun(a); cout << "->"<<x; for (int j = 0; j < 1000; j++) { if (x == s[j]) { flag = 0; break; } } if (flag) s[i++] = x; if (!flag) break; a = x; } system("pause"); return 0; }
相关文章推荐
- 算法竞赛入门 5.3.1 6174问题
- 算法竞赛入门经典-第五章6174问题
- 刘汝佳p41,3-4(竖式问题)算法竞赛入门经典第二版
- 算法竞赛入门经典 程序3-2 开灯问题
- 算法入门竞赛:竖式问题
- 算法竞赛入门经典 7.5.3 八数码问题
- 基础迷宫问题-------------(图的BFS 题目取自算法竞赛入门)
- 算法之路二:刘汝佳算法竞赛入门经典 3.4竖式问题
- 刘汝佳算法竞赛入门经典中的运算符>?问题
- 算法竞赛入门经典: 第三章 数组和字符串 3.2开灯问题
- 算法竞赛入门经典 例3-1开灯问题
- 算法竞赛入门经典 例题 3-1 开灯问题
- 走迷宫问题 算法竞赛入门经典
- (算法竞赛入门)埃及分数问题学习笔记
- 算法竞赛入门经典 例题7-3 倒水问题
- 刘汝佳算法竞赛入门经典中的运算符>?问题
- 0-1背包 (算法竞赛入门经典0-1背包问题)
- 【算法竞赛入门经典】7.5 路径寻找问题 例题7-9 UVa1601(1)
- 约瑟夫环问题(根据算法竞赛入门经典一题改编)
- 【算法竞赛入门经典】多阶段决策问题 例题9-4 UVa116