游客 Signup | Login
中文 | En

3382 - 卡布列克圆舞曲

    卡布列克是一位数学家,他在研究数字时发现:任意一个不是用完全相同数字组成的四位数,如果对它们的每位数字重新排序,组成一个较大的数和一个较小的数,然后用较大数减去较小数,差不够四位数时补零,类推下去,最后将变成一个固定的数:6174,这就是卡布列克常数。
    例如:4321-1234=3087
         8730-378=8352
         8532-2358=6174
         7641-1467=6147
    如果K位数也照此办理,它们不是变成一个数,而是在几个数字之间形成循环,称作卡布列克圆舞曲。例如对于五位数54321:
    54321-12345=41976
    97641-14679=82962
    98622-22689=75933
    97533-33579=63954
    96543-34569=61974
    97641-14679=82962
    我们把82962 75933 63954 61974称作循环节,即卡布列克圆舞曲。

Input

文件包含若干行,每行为一个待求“卡布列克圆舞曲”的起始整数(小于231-1)

Output

每行为对应整数的循环节,数据之间用空格隔开。

Examples

Input

4321
54321

Output

6174
82962 75933 63954 61974


Hint

上传者:吕红波

Solution C++

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
long long len;
char k[20000];
char d[20000];
char x[20000];
long long r[20000];
long long  t=1,z;
char ddx(char b[])
{
	sort(b,b+len,greater<char>());	
}
char xdd(char b[])
{
	sort(b,b+len,less<char>());
}
bool cx(long long q)
{
	for(long long i=1;i<=z-1;i++)
	  if(r[i]==q)
	  	return 1;
      return 0;
}
int main()
{
	//freopen(""kblk.in"",""r"",stdin);
	//freopen(""kblk.out"",""w"",stdout);
	long long t=-1;

   while(scanf("%s",&k)!=EOF)//对于不知道多少组输入数据的解决办法 
   {
      z=1;//下标注意要清0; 
   	  sscanf(k,"%lld",&t);
   	  memset(r,0,sizeof(r));//对于每一个数,r数组别忘了清0;
   	  r[z]=t;//要加上本身这个数字,坑这了 ;循环节有可能从他本身就是。 
	  while(cx(t)==0)
	    {	
			if(strlen(k)==4)
			{
		    	printf("%s\n","6174");
		        continue;
			}
			else
		    	 len=strlen(k);
				ddx(k);
				strcpy(d,k);
				xdd(k);
				strcpy(x,k);
				long long ds,xs;
				sscanf(d,"%lld",&ds);
        		sscanf(x,"%lld",&xs);		
				t=ds-xs;		
				r[++z]=t;
				sprintf(k,"%lld",t);                                  
	    }
	 
		for(long long  i=1;i<=z;i++)
			{
				if(r[i]==t)
				{
			        for(long long j=i;j<=z-2;j++)			            	
				     	cout<<r[j]<<' ';
					cout<<r[z-1];	//题库最后的空格是不忽略的			            			    	                    
	                cout<<endl;	
	                break;
	            }
			}
	    continue;
   }
  
}

Hint

上传者:吕红波

Time Limit 1 second
Memory Limit 128 MB
Discuss Stats
上一题 下一题