C++ 1019 數字黑洞(20 分)
阿新 • • 發佈:2019-02-07
注意點
(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; }