[转载]阶乘和积分解问题
http://tieba.baidu.com/f?kz=723550649n个正整数,可以有相同的,他们和是1到n所有整数的和,积是1到n所有整数的积,问n最大能到多少,使得这n个数只能是1到n所有整数
链接中已经给出:
1*6*7*10=2*3*5*14
1+6+7+10=2+3+5+14
所以余下工作量很小了。
谁写个程序穷举一下?
------------------------
扩展问题:
求N个正整数(可以存在相等的数),要求和为${N(N+1)}/2$,积为$N!$的解的数目
如N=8,有4个解:
题目读的很费解。
比如说,LZ所举例子中对应的n是多少? 呵呵,本来想用C写, 不过先试用了一下Pari/Gp,发现已经很快了。vf(N)=
{
a=vector(N);
P=N!;
S=(N*(N+1))/2;
s=0;p=P;
search(1,N);
}
search(step, total)=
{
local(v,c);
v=divisors(p);
for(u=1,length(v),
c=v;
if(c+s>S,break());
if(step>1&&c>a,break());
a=c;
s=s+c;
p=p/c;
if(step<total,
search(step+1,total),
if(s==S&&p==1,print(a)));
p=p*c;
s=s-c;
)
}(11:12) gp > vf(7)
(11:12) gp > vf(8)
所以N=8的时候分解已经不唯一了。不过N=7只有唯一分解
~ 是不是找两组相同数目的正整数,满足和相等且积亦相等?
如果是这样的话,n可以任意大。 其中一组指定是1~N这N个数,要求不存在另外一组 我们可以改进一下难度,改为计算对于每个N分别有多少个解。
相当于求N个正整数(可以存在相等的数),要求和为${N*(N+1)}/2$,积为$N!$的解的数目 为什么“要求不存在另外一组”? 1~n本身这一组总是存在的呀。 用Pari/Gp计算出来的参考结果:
(11:41) gp > vf(8)
%9 = 4
(11:42) gp > vf(9)
%10 = 12
(11:42) gp > vf(10)
%11 = 30
(11:42) gp > vf(11)
%12 = 31
(11:42) gp > vf(12)
%13 = 112
不过再计算下去有点难度了 题目都还没看懂,。,:L
页:
[1]
2