目的是抛砖引玉,直接抄骗别人也是骗自己。
题目描述
任何一个数字不全相同的三位数,经过有限次“重排求差”操作,总会得到495。
“重排求差”操作是将组成一个数的各位数字重排得到的最大数减去
最小数。例如107,“重排求差”操作序列为:710-17=693,963-369=594,954-459=495。
输入
输入由多组数据构成。
每组数据一行,包含一个数字不完全相同的三位数(该数也不是495)。
输出
针对每组输入数据,输出其“重排求差”操作得到495的过程,然后再输出一空行。
具体格式见样例。
样例输入 Copy
100 107
样例输出 Copy
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
#include<stdio.h>
int main()
{
int n,x;
while(scanf("%d",&n)!=EOF){
int a=0,b=0,c=0,max=0,min=0,y=0,e=0,s=0,result=0;
loop:
x=n;
a=x%10;
x=x/10;
b=x%10;
c=x/10;
if(a>c&&b>c){s=c;if(a>b){y=a;e=b;}else{y=b;e=a;}}
if(a>b&&c>b){s=b;if(a>c){y=a;e=c;}else{y=c;e=a;}}
if(b>a&&c>a){s=a;if(b>c){y=b;e=c;}else{y=c;e=b;}}
if(a==b){if(a>c){y=a;e=b;s=c;}else{y=c;e=b;s=a;}}
if(a==c){if(a>b){y=a;e=c;s=b;}else{y=b;e=a;s=c;}}
if(b==c){if(b>a){y=b;e=c;s=a;}else{y=a;e=b;s=c;}}
max=y*100+e*10+s;
min=s*100+e*10+y;
result=max-min;
printf("%d: %d - %d = %d\n",n,max,min,result);
if(result!=495){n=result;goto loop;}
else{printf("\n");}
}
return 0;
}