90分最后一个WA
查看原帖
90分最后一个WA
649751
Blued楼主2023/2/21 19:50
#include<bits/stdc++.h>
#define int long long
using namespace std;

int n;

map < int , bool > s;

vector < int > q;

bool ok;

int sta;

int getmax(int n)
{
	int num = 0;
	
	int ans = 0;
	
	int a[20];
	
	while(n)
	a[++ num] = n % 10,
	n /= 10;
	
	sort(a + 1 , a + num + 1);
	
	for(int i = num;i;i --)
		ans = ans * 10 + a[i];
	
	return ans;
}

int getmin(int n)
{
	int num = 0;
	
	int ans = 0;
	
	int a[20];
	
	while(n)
		a[++ num] = n % 10,
		n /= 10;
	
	sort(a + 1 , a + num + 1);
	
	for(int i = 1;i <= num;i ++)
		ans = ans * 10 + a[i];
	
	return ans;
}

void work(int n)
{
	if(n >= 1000 && n <= 9999)
	{
		puts("6174");
		
		return ;
	}
	
	q.clear();
	s.clear();
	ok = false;
	
	int num;
	
	while(true)
	{
		num = getmax(n) - getmin(n);
		
		if(s[num])
		{
			sta = num;
			break;
		}
		else
			q.push_back(num) , s[num] = true;
		
		n = num;
	}
	
	for(int i = 0;i < q.size();i ++)
		if(q[i] == sta || ok)
			cout << q[i] << ' ' , ok = true;
	
	cout << '\n';
	
	return ;
}

main()
{
	while(cin >> n)
	work(n);
	
}
2023/2/21 19:50
加载中...