蓝桥杯算法提高训练之循环 递归-数字黑洞

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

问题描述

任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律:

1)将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数;

2)将组成该四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果四个数中含有0,则得到的数不足四位);

3)求两个数的差,得到一个新的四位数(高位零保留)。

重复以上过程,最后一定会得到的结果是6174。

比如:4312 3087 8352 6174,经过三次变换,得到6174

输入格式

一个四位整数,输入保证四位数字不全相同

输出格式

一个整数,表示这个数字经过多少次变换能得到6174

样例输入

4312

样例输出

3

参考代码见下页

**************Powered by Graphene Richards**************/ extern"C++"{

#define FLOAT_PRECISION 2

#ifdef _MSC_VER

#define _SECURE_SCL 0

#pragma comment(linker,"/STACK:102400000,102400000")

#else

#pragma GCC optimize("O3")

#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx") #endif

#if defined(_MSC_VER)||__cplusplus>199711L

#define IT(x) auto

#define DIT(x) auto

#else

#define IT(x) __typeof((x).begin())

#define DIT(x) __typeof((x).rbegin())

#endif

# inc\

lude

# inc\

lude

# inc\

lude

# inc\

lude

# inc\

lude

# inc\

lude

# inc\

lude

# inc\

lude

# inc\

lude

# inc\

lude

# inc\

lude

# inc\

lude

# inc\

lude

# inc\

lude

# inc\

lude

# inc\

lude

#define FAST_RW ios_base::sync_with_stdio(0),cin.tie(0);

#define FS(i,a) for(ll i=0;a[i];i++)

#define FE(it,x) for(IT(x) it=(x).begin(),_en=(x).end();it!=_en;it++)

#define EF(it,x) for(DIT(x) it=(x).rbegin(),_en=(x).rend();it!=_en;it++) #define FR(i,en) for(ll i=0,_en=(en);i<_en;i++)

#define FOR(i,en) for(ll i=1,_en=(en);i<=_en;i++)

#define RF(i,en) for(ll i=(en)-1;i>=0;i--)

#define ROF(i,en) for(ll i=(en);i>0;i--)

#define FFR(i,x,y) for(ll i=(x),_en=(y);i<=_en;i++)

#define RFF(i,x,y) for(ll i=(x),_en=(y);i>=_en;i--)

#define pc putchar

#define pb push_back

#define ppb pop_back

#define pq priority_queue

#define fi first

#define se second

#define mp make_pair

#define pii pair

#define pll pair

#define sqr(x) ((x)*(x))

#define all(x) (x).begin(),(x).end()

#define rall(x) (x).rbegin(),(x).rend()

#define clr(x) memset((x),0,sizeof(x))

#define ms(x,v) memset((x),(v),sizeof(x))

#define mc(x,y) memcpy((x),(y),sizeof(y))

#define NL puts("");

#define LB lower_bound

#define UB upper_bound

#define rand() ((rand()<<16)^(rand()<<15)^(rand()))

#ifdef _WIN32

#define _i64_ "%I\

64d"

#define _u64_ "%I\

64u"

#else

#define _i64_ "%l\

ld"

相关文档
最新文档