
任选4个不完全相同的数字(像1111就不行),让“最大排列”减“最小排列”(例如8753-3578),不断重复这个动作,最后一定会得到相同的结果:6174。神奇的是:这个“最大减最小”的动作,最多不会超过7次! 我们先来看看五组实验结果 请输入一个互不相同的四位数:37580 `+ Q7 m& p& i# ?+ W- G, P8 a0 w输入的四位数是:3758% r* V' o% Y; d6 ~* X3 E 第1次:8753 - 3578 = 51759 _' U% s" H ?4 G7 b. O7 ^) w5 Q 第2次:7551 - 1557 = 5994 第3次:9954 - 4599 = 5355 第4次:5553 - 3555 = 1998+ G( V" j( _1 D& L o1 f/ ]) I2 T 第5次:9981 - 1899 = 8082 第6次:8820 - 288 = 8532 第7次:8532 - 2358 = 61742 D% k: g0 m" @/ Q& N 经过了7次最大减最小的动作 请输入一个互不相同的四位数:2517 输入的四位数是:2517/ y' d4 h6 i& A" Y: r% ]! y& ~ 第1次:7521 - 1257 = 6264 第2次:6642 - 2466 = 4176 第3次:7641 - 1467 = 6174 经过了3次最大减最小的动作 请输入一个互不相同的四位数:6915 输入的四位数是:6915 第1次:9651 - 1569 = 8082 第2次:8820 - 288 = 8532$ J7 ^/ n* J0 |" ^ 第3次:8532 - 2358 = 6174# g" `7 G/ Q8 r& @: @6 c2 g; ` 经过了3次最大减最小的动作 请输入一个互不相同的四位数:9073 输入的四位数是:9073 第1次:9730 - 379 = 9351 第2次:9531 - 1359 = 8172: U: [! C( f5 v9 t4 }+ b' x 第3次:8721 - 1278 = 7443 第4次:7443 - 3447 = 3996 第5次:9963 - 3699 = 6264- X8 r8 X- b1 y/ q. m& } 第6次:6642 - 2466 = 41764 L* X. g/ W* X- I Q6 k1 ^8 l' R 第7次:7641 - 1467 = 6174, P$ k6 t" c$ u a) V2 V0 |0 D 经过了7次最大减最小的动作 请输入一个互不相同的四位数:5287+ |+ b% s) i: p" | 输入的四位数是:5287 第1次:8752 - 2578 = 61744 p8 D, A$ Z0 K6 `0 T$ B& A, N4 j 经过了1次最大减最小的动作) R% h- T7 N4 k' G 接下来我们用C语言代码进行验证,代码实现如下。 代码实现#include <stdio.h>int convert(int number[],int ans); int *sort(int number[],int len);/ n2 c0 b7 [* ~4 T* B int main(void) { int number[4] = {0};! q, _& R7 w3 ^ int *p = NULL; int n = 0; int ans = 0;" ^2 V) E/ Y" {$ l int count = 0; printf("请输入一个互不相同的四位数:");+ s$ L; i1 L4 ]8 J9 i3 ] x scanf("%d",&n);& d" n. Y z6 J* e) u+ S' @ printf("输入的四位数是:%d\n",n); ans = n; while(ans!=6174) { ans = convert(number,ans);$ j, q& E, [0 J. Y1 w# s printf("第%d次:%d\n",count+1,ans); ++count;2 z1 h" G+ k! s6 F# F% H } printf("经过了%d次最大减最小的动作\n",count); return 0;; d9 m& N$ e) {+ M' H3 L! P } int *sort(int number[],int len) //大到小的排序 {* p) {( C3 d C. a8 p) j& q0 m. V" Q int a =0;% h- T$ D0 [/ e for(int i=0; i<len; ++i)1 d# ]. ]; L. ^9 n {4 M3 N8 S: W# ~, o' }. Y for(int j=i+1;j<len;++j) {5 x C' I) n0 m8 z# ]% N- h0 P if(number <number[j]) {4 D/ z* l3 k8 f3 p a = number;0 N w4 m J! p @$ y2 r; a" I. G number = number[j]; number[j] = a;7 e1 L2 x* F4 \+ K/ ] }, h: I& o) Q/ k1 v* H3 P }7 F+ o/ b5 ]# D' a* z" ?8 A1 U } return number;0 m! J- Q; V$ p } int convert(int number[],int ans)//每次变换得到的数字 { int *p = NULL; int m=0; number[0] = ans/1000; //把这个数放入数组& y( x* f* Q/ l% O number[1] = ans%1000/100;: {4 }+ v5 a% L number[2] = ans%100/10; number[3] = ans%10; 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);//最大数字减去最小数字 return m; } 运行结果: ![]() 1 A2 L- |0 O7 R& F |
这是什么原理? |
最全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过程...