
任选4个不完全相同的数字(像1111就不行),让“最大排列”减“最小排列”(例如8753-3578),不断重复这个动作,最后一定会得到相同的结果:6174。神奇的是:这个“最大减最小”的动作,最多不会超过7次! 我们先来看看五组实验结果 请输入一个互不相同的四位数:3758: C$ I, {9 T# t* t8 B输入的四位数是:3758 第1次:8753 - 3578 = 5175 第2次:7551 - 1557 = 5994 第3次:9954 - 4599 = 5355 第4次:5553 - 3555 = 19985 e! K5 y( c! R& j' [6 E# K& t 第5次:9981 - 1899 = 8082$ n+ L @9 H5 v# g: ~0 F 第6次:8820 - 288 = 8532# ?9 ~, a7 B: @8 d 第7次:8532 - 2358 = 6174 经过了7次最大减最小的动作 请输入一个互不相同的四位数:2517 输入的四位数是:2517. F' N) h, k8 Z0 S 第1次:7521 - 1257 = 6264 第2次:6642 - 2466 = 4176! ?1 v$ ]% o6 b. ~% ~# c3 t 第3次:7641 - 1467 = 6174 经过了3次最大减最小的动作 请输入一个互不相同的四位数:6915 输入的四位数是:69157 `: U% d5 e! K 第1次:9651 - 1569 = 8082 第2次:8820 - 288 = 85327 w5 G1 o$ p4 f# v% K! O 第3次:8532 - 2358 = 6174 经过了3次最大减最小的动作 请输入一个互不相同的四位数:90732 r; B R, x& Z' l 输入的四位数是:9073 第1次:9730 - 379 = 9351 第2次:9531 - 1359 = 8172 第3次:8721 - 1278 = 7443 第4次:7443 - 3447 = 39967 T8 D1 w& S& P* f" X8 c" J 第5次:9963 - 3699 = 6264$ z. X3 S' P W) \ 第6次:6642 - 2466 = 4176 第7次:7641 - 1467 = 6174 经过了7次最大减最小的动作 请输入一个互不相同的四位数:52879 Y# \6 O6 j5 T Z 输入的四位数是:5287- x3 O6 h/ @) c/ w4 j( P: a 第1次:8752 - 2578 = 6174 经过了1次最大减最小的动作* }9 g; O" h* ?. I/ k 接下来我们用C语言代码进行验证,代码实现如下。 代码实现#include <stdio.h>int convert(int number[],int ans);2 h' X( \% W4 l! a9 r, p+ S int *sort(int number[],int len);. ]4 b' ]6 l/ p9 _% z5 X int main(void) {: t* R: a8 X8 B) v( n A! I- ^ int number[4] = {0};1 `( L) D9 k/ g' I' m* h8 o4 I& b int *p = NULL; int n = 0;3 l3 N- w' [2 Y6 l" }4 R int ans = 0; int count = 0;0 o _; M4 M5 i6 @6 g/ `& j6 ^ printf("请输入一个互不相同的四位数:");7 g0 L! K0 O- n0 m: G scanf("%d",&n); printf("输入的四位数是:%d\n",n);( Z, i0 w9 \0 V: Y3 _. l ans = n; while(ans!=6174)8 F; t7 g3 C4 Y$ \" F9 [2 W$ s0 x" [5 o { ans = convert(number,ans);1 g; b; G9 z2 y, _ printf("第%d次:%d\n",count+1,ans);, e* _7 {2 f# {( t" A ++count;; K% I2 }) v4 | } printf("经过了%d次最大减最小的动作\n",count); return 0;+ o* e' P! w& b6 q- M } int *sort(int number[],int len) //大到小的排序4 g6 B, u% r+ ]* R% S5 N! r5 v { int a =0;# `- b. Q3 a+ w- C0 V7 w$ x* t for(int i=0; i<len; ++i)! P3 r6 j/ X E& ?, } ~* c) T {: h3 ]6 |! s# H( h4 ? for(int j=i+1;j<len;++j)* R a$ |5 Z2 z/ }( p/ e( { { if(number <number[j])6 m; u- Y' ]% V5 z+ Y0 ]5 P { a = number; number = number[j]; number[j] = a; } }3 J+ \* y" U- U0 V } return number; } int convert(int number[],int ans)//每次变换得到的数字 {- n' {3 M$ o- N% E int *p = NULL; int m=0;4 ~1 `; Q% S& B number[0] = ans/1000; //把这个数放入数组1 w( |/ D. v2 T$ U) I2 f+ j number[1] = ans%1000/100; number[2] = ans%100/10;# T! J4 b2 q9 P& l0 ? number[3] = ans%10;/ ~3 M$ N$ S9 C( {/ n4 I p = sort(number,4); m=(*p*1000+*(p+1)*100+*(p+2)*10+*(p+3))- ( *(p+3)*1000+*(p+2)*100+*(p+1)*10+*p);//最大数字减去最小数字7 o1 g. _7 U; o- T3 l return m; } 运行结果: ![]() |
这是什么原理? |
最全USB HID开发资料,悉心整理一个月,亲自测试
实战经验 | 选择USBX模块生成USB CDC ACM无PD的项目
STM32 USB HID键盘例程
UDS诊断服务
刘氓兔的杂谈【001】-片上USB 高速PHY
【经验分享】在进行 USB CDC 类开发时,无法发送 64整数倍的数据
【源码】STLINK-V3MINI 高速USB仿真器,成功改刷【高速CMSIS-DAP】
在线直播|无需编写任何代码即可在STM32上实现USB-C Power Delivery
STM32 USB CDC 虚拟多串口
圈圈发布USB图书第二版有感,以及分享一些我学习USB过程...