HzuWHF


私信TA

用户名:I7I08I9047

访问量:83394

签 名:

我RUN了

等  级
排  名 19
经  验 21271
参赛次数 13
文章发表 127
年  龄 3
在职情况 学生
学  校 贺州学院
专  业

  自我简介:

解题思路:
            

        没啥好说的,它讲什么,我们做什么。变换成最大最小值我这里的做法是把它变成字符串然后 sort 在返


回数字,当 num 有前导零的时候增加 10 倍即可。


参考代码:

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;

bool compare(int a, int b) { return a > b; }

int Max(int num) {
	char numc[5]; int max;
	sprintf(numc, "%d", num);
	sort(numc, numc + strlen(numc), compare);
	sscanf(numc, "%d", &max);
	return max;
}

int Min(int num) {
	char numc[5]; int min;
	sprintf(numc, "%d", num);
	sort(numc, numc + strlen(numc));
	sscanf(numc, "%d", &min);
	return min;
}

int main() {
	int num, max, min, total = 0;
	cin >> num;
	
	while (num != 6174) {
		if (num < 1000) num *= 10;
		max = Max(num);
		min = Min(num);
		num = max - min;
		total++;
	}
	
	cout << total;
	return 0;
}


 

0.0分

0 人评分

  评论区

  • «
  • »