求出n个互异的数使得最小公倍数等于所有元素之和
来源:互联网 发布:sqlserver 视图概念 编辑:程序博客网 时间:2024/06/06 19:12
(1) 方法1:这个是看了别人的办法得到的启示,对于任何一个n元组,假设其满足题意,设lcm(a1...an)=∑ni=1ai=x .
则考虑添加两个k1x,k2x使得n+2元组依旧满足 ,其实这里问题转换成:寻找一个包含1的三元组,1,k1,k2满足题意 ,这里利用到了如何求n个数的lcm,n+2个数的lcm就等于前n个的lcm:x 和后两个数k1x,k2x 的lcm,这个容易证明。
显然1,2,3是最简单的三元组,但是对于偶数的情况,就不那么显然了,反正我手动没有能够构造出来,这就要利用暴力求解了。
下面的代码给出了如何暴力求解:要求出n个数的最小公倍数(这里要先求最大公约数)可以转换成从两个数的最小公倍数开始,类似于
∑ai=add(...(add(add(a0,a1),a3)...an) 这种思路,迭代着求。
def gcd(a,b): while a!=b: if a>b:a,b = b,a-b else:a,b = b,b-a return adef lcm(a,b): return a*b//gcd(a,b)def all(): n = 30 for i in range(1,n): for j in range(i+1,n): m1,s1 = lcm(i,j),i+j for k in range(j+1,n): m2,s2 = lcm(m1,k),s1+k for u in range(k+1,n): if lcm(m2,u)==s2+u:return (i,j,k,u)
剩下的代码就很简单了,利用n=3,n=4的情况不断迭代即可。
方法2: 这个方法更加简单,但是也很巧妙。注意到对于每一个n元组,如果直接规约到n+1的情况?我们可以从最小公倍数入手,假如我们对除1以外的每一个数都乘以3,那么最小公倍数就变成原来的3倍,这时候为了使得和满足条件,加上一个2即可。
注意,因为1,2,3的最小公倍数是6,所以加上一个2不会影响最小公倍数。同样的道理还可以乘4,乘7
def next(n): first = (1,2,3) for j in range(n-3):first = [1,2]+[i*3 for i in first[1:]] return sorted(first)
0 0
- 求出n个互异的数使得最小公倍数等于所有元素之和
- Java-求出所有的水仙花数(各位数字立方之和等于数本身的三位整数)并输出。
- 求出1-1000之间所有的满足如下条件的数:它的每个位上的数字的3次幂之和等于它本身,比如153。
- 【c++】输入一个n×n的矩阵,求出两条对角线元素值之和【原创技术】
- 编写程序输入一个n*n的矩阵,求出两条对角线元素值之和
- 输入一个N阶方阵个元素的值求出两条对角线元素值之和
- 求出1…n之间的所有亲和数
- 求出1…n之间的所有亲和数
- 面试算法题:求出所有N位的二进制数
- nbut [1173] Birdlike Angry Pig 找出某个数使得等于其它所有数的&操作
- 面试题:输入一个正整数n,输出所有的连续正整数之和等于n的序列
- 输入一个偶数N,输出所有素数对之和等于N的素数对
- 输入一个整数,输出所有可能的整数序列,使得序列中的整数之和等于输入的整数
- 求出所有的正整数对 使他们最大公约数为n,最小公倍数为m
- 编程输入一个n×n矩阵中各元素的值,求出两条对角线上的元素之和
- 求1-n中所有数的最大公约数之和
- 算法.给定数为数组中2个元素的之和,求出数组的下标
- 自然数序列,找出任意连续之和等于n的所有子序列
- C# Ping 简单使用
- LaTex学习笔记(1)——LaTeX文档插入图片的几种常用方法
- Oracle 建立索引及SQL优化
- TF-IDF与余弦相似性的应用(三):自动摘要
- hdoj 5727 Necklace 二分图 全排列
- 求出n个互异的数使得最小公倍数等于所有元素之和
- Android省市区三级联动滚轮选择(真实项目中提取出来的组件)
- 177.Which three statements are correct about temporary tables? (Choose three.)
- UVA - 401 Palindromes
- 178.All the database users are presently connected to the database instance and working. The HR user
- UVA - 644 Immediate Decodability
- 阿拉伯数字的研究
- freopen、setbuf、linux kill 简单记录
- 9 分解质因数,其实我感觉还是有点难,转了好半天终于转过弯来了。