1019 数字黑洞 (20 分)
题目链接:1019 数字黑洞 (20 分)
这道题目:没有太难的地方,但是因为基础不够牢固,很多操作花的时间较长,甚至有些参考网上的方法。
1 #include <bits/stdc++.h> 2 using namespace std; 3 4 int string_to_int(string str) 5 { 6 int num; 7 stringstream ss; 8 ss<<str; 9 ss>>num; 10 return num; 11 } 12 13 string int_to_string(int num) 14 { 15 string str; 16 stringstream ss; 17 ss<<num; 18 ss>>str; 19 return str; 20 } 21 22 int main() 23 { 24 string s; 25 cin>>s; 26 while(1) 27 { 28 for(;s.length()<4;) 29 s+='0'; 30 sort(s.begin(),s.begin()+s.length()); 31 int a=string_to_int(s); 32 string s2=""; 33 for(int i=s.length()-1;i>=0;i--) 34 s2+=s[i]; 35 int b=string_to_int(s2); 36 string s3=int_to_string(b-a); 37 for(;s3.length()<4;) 38 s3.insert(0,"0"); 39 cout<<s2<<" - "<<s<<" = "<<s3<<endl; 40 if(b-a==6174||b==a) 41 break; 42 int num=b-a; 43 s=int_to_string(num); 44 } 45 return 0; 46 }
以后总结一下各种不熟悉的操作
字符串转int
1 string int_to_string(int num) 2 { 3 string str; 4 stringstream ss; 5 ss<<num; 6 ss>>str; 7 return str; 8 }
int转字符串
1 int string_to_int(string str) 2 { 3 int num; 4 stringstream ss; 5 ss<<str; 6 ss>>num; 7 return num; 8 }