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

1 comments

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