欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++ 1019 数字黑洞(20 分)

程序员文章站 2022-06-07 13:14:20
...

C++ 1019 数字黑洞(20 分)

C++ 1019 数字黑洞(20 分)

 

注意点

(1)格式问题,算式中间有空格

(2)   格式很重要 都是四位数 :789应该是0789   1应该是0001

(3) 有格式要求的输出用printf  比cout好用

 

#include<iostream>
#include<string.h>  //string
#include<algorithm>  //sort
#include<math.h>  //pow
using namespace std;

int main()
{
  string str;
  int a[4]={0,0,0,0};
  int d=0,x=0,cha=0;  //较大值 较小值初始化  输入值
  cin>>str;
  int len=str.length();
  for(int i=0;i<len;i++){
    a[i]=str[i]-'0';
  }
  
  if (a[1]==a[2]&&a[2]==a[3]&&a[3]==a[0])  {
      cout<<str<<" - "<<str<<" = "<<"0000";     //这样写如果0000不带引号的话,第一个测试点错误   
     // printf("%04d - %04d = %04d\n",a[0]*1111,a[0]*1111,0);
      
     }
  else{
    while(cha!=6174)
    {
      sort(a,a+4,greater<int>());
    
      
      
        for(int i=0;i<4;i++){
          d=10*d+a[i];
          x=10*x+a[3-i];   //注意789  应该表示为0789
        }
        cha= d-x;
       // cout<<d<<" - "<<x<<" = "<<cha<<endl;   //可能是3210-123   格式错误
        printf("%04d - %04d = %04d\n",d,x,cha);
        
        a[3]=cha%10;
        a[2]=(cha/10)%10;
        a[1]=(cha/100)%10;
        a[0]=cha/1000;
        d=0;
        x=0;
      
    }
  }
  
  return 0;
}