- 保送
HELP!!!
- 2024-4-2 19:59:27 @
给定⼀个三位数,要求各位不能相同。例如,352 是符合要求的,112 是不符合 要求的。将这个三位数的三个数字重新排列,得到的最⼤的数,减去得到的最⼩ 的数,形成⼀个新的三位数。对这个新的三位数可以重复上述过程。神奇的是, 最终⼀定会得到 495! 试试看,重新排列 352,得到的最⼤数为 532,最⼩数为 235,它们的差是 297; 变换 297,得到 972-279=693;变换 693,963-369=594;变换 594,954-459=495。 因此,352 经过 4 次变换得到了 495。 现在,输⼊的三位数,你能通过编程得出,这个三位数经过多少次变换能够得到 495 吗?
输入描述
输⼊⼀⾏,包含⼀个符合要求的三位数 N 。
输出描述
输出⼀⾏,包含⼀个整数C ,表⽰经过 C次变换得到 495 。
样例
输入数据 1
352
输出数据 1
4
压根不会
2 条评论
-
rc247linian1 LV 7 @ 2024-6-23 8:33:05
谢谢大佬!
-
2024-4-5 8:19:18@
#include<bits/stdc++.h> int maxof3(int a, int b, int c){ int t; if (a < b){ t = a; a = b; b = t; } if (a < c){ t = a; a = c; c = t; } if (b < c){ t = b; b = c; c = t; } return (a * 100 + b * 10 + c); } int minof3(int a, int b, int c){ int t; if (a < b){ t = a; a = b; b = t; } if (a < c){ t = a; a = c; c = t; } if (b < c){ t = b; b = c; c = t; } return (100 * c + 10 * b + a); } int main(){ int num, cnt = 0; int a1, b1, c1; int max, min; scanf("%d", &num); while (num != 495){ c1 = num % 10; b1 = num / 10 % 10; a1 = num / 100; max = maxof3(a1, b1, c1); min = minof3(a1, b1, c1); num = max - min; cnt++; } printf("%d", cnt); return 0; }
- 1