免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: liuke432
打印 上一主题 下一主题

1 2 5三个数相加等于1000,共有多少种情况?要求行数 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2007-03-26 16:55 |只看该作者
原帖由 ArXoR 于 2007-3-26 13:40 发表


不知道你在写什么, 我觉得你似乎没有明白为什么可以这样算.

你觉得哪里不理解

我上面的代码用a b c代替了 5  2   1
是这个程序具有扩展性

可以完成任意3个正整数组合的大多数问题

论坛徽章:
0
22 [报告]
发表于 2007-03-26 17:20 |只看该作者
原帖由 njmarshal 于 3/26/07 16:55 发表

你觉得哪里不理解

我上面的代码用a b c代替了 5  2   1
是这个程序具有扩展性

可以完成任意3个正整数组合的大多数问题


在你写的程序里面
b != 1 时能保证所有这些a,b,c加起来等于1000么?
换句话说, b 不一定整除 (1000 - i - b - j * c), 0 <= j*c <= 1000 - i - b.

我的之前给的方法就是基于存在一个1, 能整除2与5, 而且能整除n.

而且要求1,2,5至少都有一个也不是什么问题, 对1000-8=992 求就好了

[ 本帖最后由 ArXoR 于 2007-3-26 17:22 编辑 ]

论坛徽章:
0
23 [报告]
发表于 2007-03-26 17:37 |只看该作者
原帖由 ArXoR 于 2007-3-26 17:20 发表


在你写的程序里面
b != 1 时能保证所有这些a,b,c加起来等于1000么?
换句话说, b 不一定整除 (1000 - i - b - j * c), 0 <= j*c <= 1000 - i - b.

我的之前给的方法就是基于存在一个1, 能整除2与5, ...



有道理

考虑欠缺

1是很特殊的数字 ,任何整数总可以用他想加得到

确实

论坛徽章:
0
24 [报告]
发表于 2007-03-26 18:32 |只看该作者
int i;
int count=1;
for(i=1000;i;i-=5)
  count+=(i/2+1);
不好意思四行

论坛徽章:
0
25 [报告]
发表于 2007-03-26 18:34 |只看该作者
关键是简化运算步骤而不是怎么写。

论坛徽章:
0
26 [报告]
发表于 2007-03-26 21:28 |只看该作者
for(i=200;i>=0;i--)
{
      count+=floor(5*i/2)+1;
}

论坛徽章:
0
27 [报告]
发表于 2007-03-27 10:51 |只看该作者

不知道如果换成3,5,7又有得做不呢?

如果是三个数为3,5,7又该怎么考虑呢

论坛徽章:
0
28 [报告]
发表于 2007-03-27 11:10 |只看该作者
原帖由 macer 于 3/27/07 10:51 发表
如果是三个数为3,5,7又该怎么考虑呢


用生成函数, 求 1 / (1 - x^3) * 1 / (1 - x^5) * 1 / (1 - x^7) 展开式中x^n的系数.
已经有系统的方法来计算了,
能不能求出close form没试不知道.

可以参考<<Concrete Mathematics>>

论坛徽章:
0
29 [报告]
发表于 2007-03-27 12:03 |只看该作者
3,5,7的母函数还是写成(1+x^3+x^6+x^9+.....)(1+x^7+x^14+x^21+...)(1+x^5+x^10+x^15+...)让大家好理解些

论坛徽章:
0
30 [报告]
发表于 2007-03-27 18:42 |只看该作者
原帖由 liuke432 于 2007-3-24 00:28 发表
不好意思,我没有表达明白意思。
我的意思其实是要求效率再高一点。


其实他们都懂你的意思了 只是和你开玩笑而已
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP