给定⼀个三位数,要求各位不能相同。例如,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

Copy

输出数据 1

4
压根不会                                                             

2 条评论

  • @ 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