找回密码
 欢迎注册
查看: 13561|回复: 16

[擂台] [转载]阶乘和积分解问题

[复制链接]
发表于 2010-3-5 11:00:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
http://tieba.baidu.com/f?kz=723550649
n个正整数,可以有相同的,他们和是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个解:
[8, 7, 6, 5, 4, 3, 2, 1]
[9, 7, 5, 4, 4, 4, 2, 1]
[10, 7, 4, 4, 4, 3, 3, 1]
[10, 7, 6, 4, 3, 2, 2, 2]
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-3-5 11:15:15 | 显示全部楼层
题目读的很费解。
比如说,LZ所举例子中对应的n是多少?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-3-5 11:15:28 | 显示全部楼层
呵呵,本来想用C写, 不过先试用了一下Pari/Gp,发现已经很快了。
  1. vf(N)=
  2. {
  3.     a=vector(N);
  4.     P=N!;
  5.     S=(N*(N+1))/2;
  6.     s=0;p=P;
  7.     search(1,N);
  8. }

  9. search(step, total)=
  10. {
  11.     local(v,c);
  12.     v=divisors(p);
  13.     for(u=1,length(v),
  14.         c=v[u];
  15.         if(c+s>S,break());
  16.         if(step>1&&c>a[step-1],break());
  17.         a[step]=c;
  18.         s=s+c;
  19.         p=p/c;
  20.         if(step<total,
  21.              search(step+1,total),
  22.              if(s==S&&p==1,print(a)));
  23.         p=p*c;
  24.         s=s-c;
  25.     )
  26. }
复制代码
(11:12) gp > vf(7)
[7, 6, 5, 4, 3, 2, 1]
(11:12) gp > vf(8)
[8, 7, 6, 5, 4, 3, 2, 1]
[9, 7, 5, 4, 4, 4, 2, 1]
[10, 7, 4, 4, 4, 3, 3, 1]
[10, 7, 6, 4, 3, 2, 2, 2]
所以N=8的时候分解已经不唯一了。不过N=7只有唯一分解
[8,6,3]~[9,4,4]
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-3-5 11:29:32 | 显示全部楼层
是不是找两组相同数目的正整数,满足和相等积亦相等
如果是这样的话,n可以任意大。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-3-5 11:32:57 | 显示全部楼层
其中一组指定是1~N这N个数,要求不存在另外一组
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-3-5 11:39:19 | 显示全部楼层
我们可以改进一下难度,改为计算对于每个N分别有多少个解。
相当于求N个正整数(可以存在相等的数),要求和为${N*(N+1)}/2$,积为$N!$的解的数目
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-3-5 11:39:42 | 显示全部楼层
为什么“要求不存在另外一组”?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-3-5 11:42:57 | 显示全部楼层
1~n本身这一组总是存在的呀。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-3-5 11:45:59 | 显示全部楼层
用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
不过再计算下去有点难度了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-3-5 11:55:13 | 显示全部楼层
题目都还没看懂,。,
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-4-25 08:04 , Processed in 0.053192 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表