/*************************
题意:
经典的6174问题
即一个整数
不断执行 数=递减序-递增序 的过程
一定会得到6174这个数字
除非这个数字各位相同。
************************/
/***********************
方法多种多样,这里提一下要注意的点
1.输入85时,其实是0085
2.输入0时,也要进行0000-0000=0000的输出
3.输入6174时,也要进行7641-1467=6174这个输出
而不是直接结束程序
*************************/
/***********************
笔记:
*********************/
#include<iostream>
#include<stdio.h>
#include<string>
#include<vector>
#include<queue>
#include<stdlib.h>
#include<algorithm>
#include<string.h>
#include<stack>
#include<map>
#include<set>
#include<unordered_map>
using namespace std;
#define M 110000
#define INF 0x7fffffff
int main(){
int num,rnum,i;
vector<int> va;
vector<int> vb;
scanf("%d",&num);
int t = num;
int q,ta,tb;
while(1){
va.clear();
while(t!=0){
va.push_back(t%10);
t/=10;
}
for(i=va.size();i<4;i++)
va.push_back(0);
sort(va.begin(),va.end());
vb=va;
reverse(vb.begin(),vb.end());
for(i=0;i<4;i++)
printf("%d",vb[i]);
cout<<" - ";
for(i=0;i<4;i++)
printf("%d",va[i]);
cout<<" = ";
q=1;
ta=tb=0;
for(i=va.size()-1;i>=0;i--){
ta += q*va[i];
tb += q*vb[i];
q *= 10;
}
t=tb-ta;
printf("%04d\n",t);
if(t==0 || t==6174)
break;
}
return 0;
}
PAT 1069. The Black Hole of Numbers (20) 6174验证问题
最新推荐文章于 2021-02-01 16:00:01 发布