标题:黑洞数
只看楼主
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
结帖率:100%
已结贴  问题点数:20 回复次数:37 
黑洞数
我拿二十分急求助!
495是一个具有奇特性质的三位数,被称之为黑洞数。它的性质如下:

首先,任取一个十进制下的三位数,如122122或者346346等,但三个数字完全相等的三位数除外。如不能选择333333或888888
其次,把各位数字按大到小的顺序和小到大的顺序重新排列,两者相减,将会得到另一个四位数。
例如,取260260,重新排列后最大数为620620,最小数为026026,620-026=594620−026=594
重复以上过程若干遍,最后一定会得到495495
例如,对上一步的数字594594再做一次变换,得到954-459=495954−459=495
举个更加复杂的例子:

343 \rightarrow 099 \rightarrow 891 \rightarrow 792 \rightarrow 693 \rightarrow 594 \rightarrow 495343→099→891→792→693→594→495

现在给定一个正整数nn,请你输出nn掉落到黑洞中的过程。需要说明的是,不足三位数的整数,只要在最高位补00,最后也会落到黑洞里。

输入格式

第一行:单个正整数nn

输出格式

若干行:每行代表一次变换过程,详见样例

数据范围

1\leq n<10001≤n<1000,保证nn的三位数字不完全相同

例子
Input
23
复制一下
Output
320-023=297
972-279=693
963-369=594
954-459=495
复制一下
例子
Input
998
复制一下
Output
998-899=099
990-099=891
981-189=792
972-279=693
963-369=594
954-459=495
复制一下
搜索更多相关主题的帖子: 例子 复制 过程 变换 位数 
2020-02-07 13:13
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
得分:0 
hello

2020-02-07 15:38
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:10 
程序代码:
 #include<iostream>
using namespace std;
void hedong(int n)
{   while(n!=0&&n!=495)
    {
        int a[]= {n/100%10,n/10%10,n/1%10};
        for(int i=1; i!=3; ++i)
        {   for(int j=i-1; i>0&&a[j]<a[j+1]; --j)
            {   int tem=a[j];
                a[j]=a[j+1];
                a[j+1]=tem;
            }
        }
        /*for(int i=0;i!=3;++i)
        {cout << a[i] ;}*/
        int ah=a[0]*100+a[1]*10+a[2]*1;
        int b=a[2]*100+a[1]*10+a[0]*1;
        n=ah-b;
        cout <<ah <<"-" << b<<"="<<n<<'\n';
    }
}
int main()
{   int n{} ;
    cin >> n;
    hedong(n);

}  

//因为是匆忙写出来的可能有地方没考虑到

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-02-07 22:59
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
得分:10 
可参https://blog.
2020-02-08 09:05
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
得分:0 
有点意思。不由得好奇除了3位数,更多位数会不会有黑洞数呢?借用3楼的函数名写了个整型数范围内的测试(大概最多测试到8位吧),发现仅3位和4位整数最终会落入黑洞数,其他的会落入不定的一段数内循环,代码如下:
程序代码:
#include<iostream>
using namespace std;
void  hedong(int n,int *b)
{
    int i, j=1, k, l, a[10] = { 0 };
    for (i=n; i; i /= 10)a[i % 10]++;
    for (i = k = l = 0; i < 10; i++)
    {
        for (; a[i]; a[i]--)
        {
            k = k * 10 + i;
            l = i*j+l;
            j *= 10;
        }
    }
    j = l - k;
    cout << l << '-' << k << '=' << j << endl;
    if (!j)return;
    for (i = 0; b[i]; i++)if (j == b[i])return;
    b[i] = j;
    hedong(j,b);
}
int main()
{
    int i,n,b[100];
    while (cout<<"数据输入(0退出):",cin >> n && n)  
    {
        for (i = 0; i < 100; i++)b[i] = 0;
        hedong(n, b);
    }
}

能编个毛线衣吗?
2020-02-08 09:35
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
得分:0 
稍加修改即可实现本题https://blog.bccn.net/xianfajushi/66961
2020-02-08 10:11
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
得分:0 
稍加修改即可实现本题https://blog.bccn.net/xianfajushi/66961
2020-02-08 10:11
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
回复 5楼 wmf2014
代码语言太高级了,难懂

[此贴子已经被作者于2020-2-8 11:06编辑过]


把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-02-08 10:41
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
回复 7楼 xianfajushi
吐槽一下::发图就发图吧,为什么您的图上还有日历,主要是图上只有测试,没有代码,想看您优化后的代码都做不到,
建议,把代码贴上来就行,让后辈可以学习一下

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-02-08 10:50
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
回复 7楼 xianfajushi
您这样做,新手即使登入您的博客也会感觉看不懂而已,并不能起到学习作用,只能感觉您太保护自己的知识产权了(我这人说话一向很直白请版主见谅)

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-02-08 11:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-499134-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.053499 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved