三位数的 黑洞数495 HNUST OJ 1868 ( 三位数的比较 )

来源:互联网 发布:mac卸载海马玩模拟器 编辑:程序博客网 时间:2024/05/24 05:32
题目描述
任何一个数字不全相同的三位数,经过有限次“重排求差”操作,总会得到495。
“重排求差”操作是将组成一个数的各位数字重排得到的最大数减去
最小数。例如107,“重排求差”操作序列为:710-17=693,963-369=594,954-459=495。
输入
输入由多组数据构成。
每组数据一行,包含一个数字不完全相同的三位数(该数也不是495)。
输出
针对每组输入数据,输出其“重排求差”操作得到495的过程,然后再输出一空行。
具体格式见样例。
样例输入
100
107
样例输出
100: 100 - 1 = 99
99: 990 - 99 = 891
891: 981 - 189 = 792
792: 972 - 279 = 693
693: 963 - 369 = 594
594: 954 - 459 = 495


107: 710 - 17 = 693
693: 963 - 369 = 594
594: 954 - 459 = 495
思路:略 值得注意的是a b c 三位数的比较
#include <iostream>#include <cstdio>#include <cstring>using namespace std;void swap1(int &x, int &y){    int temp;    temp = x;    x = y;    y = temp;}int main(){    int n;    while(scanf("%d",&n)==1)    {        int a,b,c,num=n,res=n;        while(res!=495){        a=num/100;c=num%10;  b=num/10%10;        //printf("%d %d %d\n",a,b,c);        if(a<b)            swap1(a,b);        if(b<c)            swap1(b,c);        if(a<b)            swap1(a,b);       // printf("%d %d %d\n",a,b,c);          // a b c 从大到小        int imax=a*100+b*10+c,imin=c*100+b*10+a;        res=imax-imin;        printf("%d: %d - %d = %d\n",n,imax,imin,res);        num=res;n=res;      }      cout<<endl;    }}



原创粉丝点击