一个数字题
来源:互联网 发布:阿里云解析怎么用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
- 一个数字题
- 一个数字题
- 给定一个数字表示为数字数组,加上一个数字。
- 一个数字分解问题
- 计算一个数字位数
- 一个连续数字
- 一个数字倍频电路
- 插入一个数字
- 输出一个数字各个位数字之和
- 简单题-不用库函数,求解一个数字的平方根
- 【数字题2】求一个数组的全部子集
- P53 第38题 两个数字和一个运算符
- C/C++编程题之计算一个数字的立方根
- 程序题:输入数字,输出字符串。 如何逆序一个字符串!
- 算法题:给出一组数字,拼接一个最大的值
- 一个数字排序的实现
- 一个简单的数字验证
- 一个格式化数字字符串函数
- php study 12 php+mysql的交互
- JS中数组Array的用法
- android 之HTTPS安全访问
- 雷人语录
- C语言中的strlen与sizeof的区别
- 一个数字题
- 修改boot.ini的经验
- Android布局嵌套太深导致的错误:StackOverflowError
- UVA - 138 Street Numbers
- Java基础重温(六)子类与父类实例方法、静态方法的重写问题
- uva 10054 The Necklace
- 增强Eclipse ,MyEclipse 的代码自动提示功能
- android实现分享
- poj 2226 二分图匹配