一个数字题

来源:互联网 发布:阿里云解析怎么用ddns 编辑:程序博客网 时间:2024/05/13 23:28

最近实验室工作很烦,而且额外又接了点写网站的工作,一直在学web编程,没来得及写poj了。不过今天从网上看到了一个挺好玩的题,突然来了兴趣想做做。


题目很简单 求最小的正整数M,使得任意比M大的整数N都有N=140*a+9*b+6*c,其中a b c都是自然数


先设定了一个范围,用穷举的方式得到了问题的解。但从分析的角度来说,穷举肯定是不行了,需要一种特别的思路。那么就想到了以下的几个等式


+1 = 15*9+6-140                 3*140 = 44*9+4*6               2*9 = 3*6


第一个等式给出的是对+1操作的定义,提供了可以通过140 9 6三个因子表示所有自然数的可能

后两个等式则给出了三个因子之间的换算关系,后面的关键步骤都会用到它


那么如果N=140*a+9*b+6*c满足条件,N+1也满足条件,也就是说N=140*(a-1)+9*(b+15)+6*(c+1)满足条件


很显然,如果a>=1,那么N+1满足条件是一定成立的。但是还存在另一种情况,就是a=0的情况。这种情况下就不能简单地使用我们定义的+1算子了,因为可能会出现a-1<0的情况,不符合题义要求。为了避免这种情况,我们就必须要求b和c能够转换出140的项,也就是说,能满足条件的N一定大于3*140-141=279(+1乘子中的相加项)


那我们从279开始,279=280+140-15*9-6一定可以

280=140*2有140系数

281=140+15*9+6有140系数

282=30*9+2*6没有140系数! 注意,30*9+2*6+1=30*9+2*6+15*9+6-140=45*9+3*6-140=43*9+6*6-140,9和6的项无论如何不能演化成140*3的形式!所以282+1无法用三因子表示

283就不能拆分成标准形式,所以283不满足条件

284=140+16*9

285=31*9+6 下面看285+1=31*9+6+15*9+6 -140 = 46*9+2*6 - 140 = 44*9+5*6-140 = 3*140 + 2*6 -140 = 2*140 +2*6,所以286也满足条件了


而且从285开始,所有拆分项中a=0的数,都可以如法炮制,保证N+1也满足条件。那么最大的不满足条件的自然数就是283,也就是说M=284

原创粉丝点击