![]() |
#2
Canvas2019-02-13 15:03
大一新生非计算机专业,刚学C++,使用的是VS2017,如有不当之处请多指教ฅʕ•̫͡•ʔฅ。
#include "pch.h"//VS2017 #include <iostream> using namespace std; int Step = 0;//步数 bool Check(int Origin)//检验输入的数字是否违规 { bool b = true; if (Origin < 1000 || Origin > 9999) b = false; else if (Origin % 1111 == 0)//检验是否为1111、2222、3333……9999 b = false; return b; } int Sort(int Origin)//重排四位数 { int Max, Min;//重排后最大、最小值 int Temp[4]; for (int i = 0; i < 4; i++) { Temp[i] = Origin % 10; Origin /= 10; }//Temp【4】中储存每位数字 for (int i = 0; i < 4; i++) { for (int j = i + 1; j < 4; j++) if (Temp[i] < Temp[j]) { int t; t = Temp[i]; Temp[i] = Temp[j]; Temp[j] = t; } }//Temp【4】从大到小排好 Max = 1000 * Temp[0] + 100 * Temp[1] + 10 * Temp[2] + Temp[3]; Min = 1000 * Temp[3] + 100 * Temp[2] + 10 * Temp[1] + Temp[0]; int Next = Max - Min;//下次数字 cout << Max << "-" << Min << "=" << Next << endl;//输出减法算式 return Next;//返回下次数字 } int main() { int x; cin >> x; if (Check(x) == false) { cout << "输入四位数违规!"; exit(1); } while (1) { x = Sort(x); Step++; if (x == 6174) break;//当结果为6174时跳出循环 } cout << Step << endl;//输出步数 } |
题目描述
已知:一个任意的四位正整数。将数字重新组合成一个最大的数和最小的数相减,重复这个过程,最多七步,必得6174。即:7641-1467=6174。将永远出不来。
输入一个四位数(不会出现全部相同的),输出它变成6174的过程,并输出步数
输入
一行:一个四位数(不会出现全部相同的)
输出
假设一共需要n步才能完成变化
开始n行,每行描述一个变化
最后再输出n
样例输入
1234
样例输出
4321-1234=3087
8730-378=8352
8532-2358=6174
3