数字黑洞

不完全相同的四位整数列如3425,经过如下变换都可以变成6174,

请编写程序完成如下过程

样例输入:

  3425

样例输出:

  5432-2345=3087
  8730-0378=8352

  8532-2358=6174


#include <iostream>

#include <cstdio>
#include <algorithm>
using namespace std;
 void to_chararray(int n,int arr[])   //整数转换成整数数组
{
for(int i=0;i<4;i++)
{
arr[i]=n%10;
n/=10;
}
}

int  to_number(int arr[]){    //整数数组转换成整数
int sum=0;
for(int i=0;i<4;i++)
{
sum=sum*10+arr[i];
}
return sum;
}

  bool cmp(int a,int b)  //cmp函数
   {
    return a>b;
   }



int main() {
int n,arr[4],a,b;
scanf("%d",&n);


   while(1)

    {        

to_chararray(n,arr);
sort(arr,arr+4,cmp);
a=to_number(arr);
sort(arr,arr+4);
        b=to_number(arr);
        printf("%04d-%04d=%04d\n",a,b,a-b);
        n=a-b;
if(a-b==6174||a-b==0)
{
break;
}


    }
return 0;
}

猜你喜欢

转载自blog.csdn.net/lioncatch/article/details/80751673