当前位置: 代码迷 >> 综合 >> 1019 数字黑洞 (20 分)
  详细解决方案

1019 数字黑洞 (20 分)

热度:80   发布时间:2023-10-13 23:38:11.0

原题链接

题面

1019 数字黑洞 (20 分)

思路

就是以字符串的形式读入,通过sort排序来实现升序排和降序排,通过string+ insert 的方式补全占位的 0。

坑点

就是一个数字不足四位时,必须要先在前面用 0 占位,但是翻转时,必须要带上前面补充的 0 一起翻转,比如 10001,翻转后是1000

代码

#include<bits/stdc++.h>
using namespace std;
bool cmp(char a, char b)
{
    return a > b;
}
int main()
{
    string a;cin >> a;a.insert(a.begin(), 4 - a.length(), '0');while (1){
    sort(a.begin(), a.end());int x = stoi(a);sort(a.begin(), a.end(), cmp);int y = stoi(a);printf("%04d - %04d = %04d\n", y, x, y - x); //输出时补全四位a = to_string(y - x);a.insert(a.begin(), 4 - a.length(), '0'); //字符串前面也要加上0,三个参数分别是 插入位置、长度、内容if (a == "6174" || a == "0000") break; //终止条件}return 0;
}

总结

细节啊,我就是因为那个坑点卡了好久直到最后都没找出来,真阴险,这题。