- 最后登录
- 2024-11-25
- 在线时间
- 760 小时
- 阅读权限
- 20
- 注册时间
- 2004-6-16
- 积分
- 350
- 帖子
- 652
- 精华
- 1
- UID
- 112
- 性别
- 男
- 积分
- 350
- 帖子
- 652
- 精华
- 1
- UID
- 112
- 性别
- 男
|
本帖最后由 xwfh2000 于 2015-1-23 19:17 编辑
是的,用互斥原理可以做。主题和变种1都已经解决,因为写数学公式不方便,因此直接放c语言代码;
主题主要计算代码:
double sum = fac(2*n);
sum += Math.Pow(-1, k) * fac(n) / fac(n - k) / fac(k) * Math.Pow(2, k) * fac(2 * n - k); k从1到n
变种1主要计算代码:
double sum = fac(2*n);
sum += Math.Pow(-1, k) * fac(n) / fac(n - k) / fac(k) * Math.Pow(2, k) *( fac(2 * n - k)+k*fac(2*n-k-1)); k从1到n
其中,fac是自己写的阶乘函数。
以下是程序部分计算结果:
n 主题解 变种1解
2: 8 8
3: 240 192
4: 13824 11904
5: 1263360 1125120
6: 168422400 153262080
7: 30865121280 28507207680
8: 7445355724800 6951513784320
9: 2.28716800671744E+15 2.15315160367104E+15
10: 8.71804170613555E+17 8.26060810479206E+17
11: 4.03779880746418E+20 3.8460018899292E+20
变种2还正在考虑中……
|
|