1 solutions

  • 0
    @ 2024-12-10 21:47:36

    C :

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h> 
    
    int get_next(int x)
    {
    	int a, b, n;
    	char s[10];
    	sprintf(s, "%d", x);
    	n = strlen(s);
    	for(int i = 0; i < n; i++)
    	{
    		for(int j = i+1; j < n; j++)
    		{
    			if(s[i] > s[j])
    			{
    				char t = s[i];
    				s[i] = s[j];
    				s[j] = t;
    			} 
    		}
    	}
    	sscanf(s, "%d", &b);
    	for(int i = 0; i < n/2; i++)
    	{
    		char t = s[i];
    		s[i] = s[n-1-i];
    		s[n-1-i] = t;
    	}
    	sscanf(s, "%d", &a);
    	return a-b;
    }
    
    int main()
    {
    	int k;
    	int num[2000];
    	int count;
    	int counter = 0;
    	int counter_1 = 1;
    	int long_num;
    	int g, s, b, q;
    	int n;
    	//int xishou;
    	//scanf("%d", &xishou);
    	for(k = 1234; k < 9999; k++)
    	{
    		q = k / 1000;
    		b = k / 100 - q*10;
    		if(q != b) 
    		{
    			s = k / 10 - b*10 - q*100;
    			if(s != q && s != b)
    			{
    				g = k % 10;
    				if(g != q && g != b && g != s)
    				{
    					num[0] = k;
     	                count = 1;
    	                for(;;)
    	                {
    		                num[count] = get_next(num[count-1]);
    	                    int found = 0;
    		                for(int i = 0; i < count; i++)
    		                {
    			                if(num[i] == num[count])
    			                {
    				                found = 1;
    				                break;
    			                } 
    		                }
    		                if(found) 
    						{
    							if(count >= counter)
    							{
    								if(count > counter)
    								{
    									counter = count;
    								    long_num = num[0];
    								    break;
    								}
    								counter_1++;
    							}
    							break;
    						}
    		                count++;
    	                }
    				}
    			} 
    		}
    	}
    	//printf("%d\n", counter);
    	printf("%d\n", long_num);
    	printf("%d\n", counter_1);
    	num[0] = long_num;
    	printf("%d", num[0]);
    	count = 1;
    	for(;;)
    	{
    		num[count] = get_next(num[count-1]);
    		printf(" -> %d", num[count]);
    	    int found = 0;
    		for(int i = 0; i < count; i++)
    		{
    			if(num[i] == num[count])
    			{
    				found = 1;
    				break;
    			} 
    		}
    		if(found) break;
    		count++;
    	} 
    	printf("\n");
    	return 0;
    }
    
    • 1

    Information

    ID
    505
    Time
    1000ms
    Memory
    2MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By