//这一题的陷阱多多,贡献了2次OLE,一次WA!哎!陷阱:需要保证输入的数必须为4位,不能大于或小于4位,要不就OLE! 输出的是No,Ok而不是no ,ok
#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
using namespace std;
bool cmp(char a, char b)
{
return a > b;
}
int main()
{
int n, c, temp1, temp2, ans;
string str, str1, str2;
bool flag, flag1, flag2;
while (cin >> n && n != -1)
{
cout << "N=" << n << ":" << endl;
c = 0;
flag = flag1 = flag2 = false;
while (1)
{
stringstream stream;
stream << n;
stream >> str;
if (!flag2)//对输入的数判断是否为4位数,第二次就可以跳过,不用再判断!
{
flag2 = true;
if (str.length() != 4)
{
flag = true;
break;
}
}
str1 = str2 = str;
sort(str1.begin(), str1.end());
sort(str2.begin(), str2.end(), cmp);
if (!flag1)
{
if (str1 == str2)
{
flag = true;
break;
}
}
stringstream stream1;
stream1 << str1;
stream1 >> temp1;
stringstream stream2;
stream2 << str2;
stream2 >> temp2;
ans = temp2 - temp1;
c++;
flag1 = true;
cout << temp2 << "-" << temp1 << "=" << ans << endl;
if (ans == 6174 || ans == 0) break;
else n = ans;
}
if (flag)
cout << "No!!" << endl;
else
cout << "Ok!! " << c << " times" << endl;
}
system("pause");
}
poj 1350 Cabric Number Problem
最新推荐文章于 2025-08-10 00:01:57 发布