3位黑洞数

黑洞数也称为陷阱数,又称“Kaprekar问题”,是一类具有奇特转换特性的数,任何一个子位数李不全相同的三位数,经有限次“重排求差”操作,总会得到45,最后所得的5部为三位需再数所谓“重排求差”操作即组成该数的数字重排后的最大数减去重排后的最小数。例如,对三位数207
6- 第1次重排求差得:720-27=693;第2次重排求差得:963-369=594;第3次重排求差得:
954-459 =495;编写程序,实现如下功能:输入一个三位整数,输出将其转换为黑洞数的过程,
输入输出格式为:
输入: 207
输出: 1:720-27=693
2:963-369=594
3:954-459=495
如果输入的三位数字全部相同,则只输出一次重排求差过程,值为0就停止。
 

#include <stdio.h>

#include <string.h>

int max(int a,int b,int c) {

    return a>b?(a>c?a:c):(b>c?b:c);

}

int mid(int a,int b,int c) {

    return a>b?(a<c?a:((c>b)?c:b)):(b<c?b:((a>c)?a:c)) ;

}

int min(int a,int b,int c) {

    return a<b?(a<c?a:c):(b<c?b:c);

}

int summax(int fir,int se,int th) {

    return max(fir,se,th)*100+mid(fir,se,th)*10+min(fir,se,th);

}

int summin(int fir,int se,int th) {

    return max(fir,se,th)*1+mid(fir,se,th)*10+min(fir,se,th)*100;

}

int main( ) {

    int th,se,fir,t,n,i=10;

    scanf("%d",&n);

    t=n;

    while(t!=495&&t!=0) {

        fir=t%10;

        se=t/10%10;

        th=t/100%10;

        t=summax(fir,se, th)-summin(fir,se,th);

        printf("%d-%d=%d\n",summax(fir,se, th),summin(fir,se,th),t);

    }

    return 0;

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值