作者:飞天美术_888_265 | 来源:互联网 | 2023-02-13 13:56
某人购买的体育彩票猜中了4个号码,这4个号码按照从大到小的顺序组成一个数字可被11整除,将其颠倒过来也可被11整除,编写函数求符合这样条件的4个号码。可被11整除颠倒过来也可被11整除的正整数例如3
某人购买的体育彩票猜中了4个号码,这4个号码按照从大到小的顺序组成一个数字可被11整除,将其颠倒过来也可被11整除,编写函数求符合这样条件的4个号码。可被11整除颠倒过来也可被11整除的正整数例如341,它可被11整除,颠倒过来143也可被11整除。体育彩票采用整数1、2、3、……、36表示36种体育运动。
这个要怎么做??难道要4层循环挨个试?
求高手解答~
22 个解决方案
其实如果一个数字可以被11整除,那么颠倒过来也一定可以被11整除的……
被11整数的数的特点(十进制表示):奇数位上的数字之和-偶数为上的数字之和,得到的值能被11整除,则这个数能被11整数。
找出能被11整除的那么直接可以for循环直接
for(i=1;i<=n;i++)
hash[i*11]++;
然后在根据哪个等于1的在继续找,找什么呢?找它的反数,判断它的反数hash里面那个值是不是等于1,判断2个满足要求,满足的话就打印这组数据然后把hash[i]和hash[j]变为0(防止在次访问hash[j]避免重复)在count++
可以试着用递归实现,思想还是枚举,但理解起来较简单,代码量也较少。
这样的数根本不存在...题目要求
这4个号码按照从大到小的顺序组成一个数字可被11整除
因为能被11整除,这个数必须满足奇数位的和等于偶数位的和,即千位十位的加起来等于白位加个位。
都规定了这个数按从大到小排列了,千位+十位肯定大于白位+加个位。
至于你举的例子,341这个是从大到小排列吗???改成431你给我除个试试。
如果没要求大小排列,那么找4个数,只要满足A+B = C+D
就能写出8个:ACBD, ADBC, BCAD, BDAC, CADB, CBDA, DACB, DBCA.
在linux用gcc改为if(num_turn%11!=0)输出就没有数据~
为什么Cfree的有问题??好奇怪。。。。