您的位置:首页 > 其它

PAT BASIC 1019 数字黑洞

2017-02-11 13:36 169 查看

思路:

这个题就是疯狂地把int类型的四位数转换成array类型,然后再转换回来,没什么难度,但是不要把正反的输出方式搞错了,不要把1286弄成8621。

代码:

#include<iostream>
#define Last 6174
using namespace std;
int num, part[4] = { 0 };
int check();

int check()
{
int i, j, flag = 1, jiang = 0, sheng = 0, t, l, n;
for (i = 0; i < 4; i++)
{
part[i] = num % 10;
num = num / 10;
}
for (i = 0; i < 3; i++)
{
l = i;
for (j = i + 1; j < 4; j++)
if (part[j]>part[l])
l = j;
if (i != l)
{
t = part[i];
part[i] = part[l];
part[l] = t;
}
}
for (i = 0; i < 4; i++)
{
jiang = jiang * 10 + part[i];
sheng = sheng * 10 + part[3 - i];
}
num = jiang - sheng;
for (i = 0; i < 4; i++)
cout << part[i];
cout << " - ";
for (i = 3; i >= 0; i--)
cout << part[i];
cout << " = ";
n = num;
for (i = 0; i < 4; i++)
{
part[i] = n % 10;
n = n / 10;
}
for (i = 3; i >= 0; i--)
cout << part[i];
cout << "\n";
if (num == 0 || num == Last)
return 0;
else return 1;
}

int main()
{
cin >> num;
while (check());
//while (1)
//{
//}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: