| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2510 人关注过本帖, 1 人收藏
标题:小猴喜欢吃桃,吃法有点怪,第一天吃1个,以后每天吃的数量比前一天吃的数多 ...
只看楼主 加入收藏
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
收藏
得分:0 
以下是引用beyondyf在2011-12-21 08:43:11的发言:

呵呵,楼主别介意我的问题。知道你多大我才好判断该从哪个角度和你探讨。
关于你们在使用的模拟问题过程的算法,我不多说什么了,都在把简单的问题往复杂里做。给一个示例对自己比一下。#include
int main()
{
    int n, day, k;
    printf("Input the number of peaches: ");
    scanf("%d", &n);
    for(k = 1, day = 0; n > 0; day++)
    {
        n -= k;
        k += 2;
    }
    printf("%d\n", day);
    return 0;
}
现在主要说说这题的数学规律。我忘了什么时候学的等差数列了,初中还是高中?
这题的描述简直就是一个等差数列的定义。只不过现在是已知了前N项和,就项数N而已。
还记得上一贴最后小曹提到的那个公式吗?现在带各位温习一下知识了。

等差数列
第一项为 a1 = 1;
项差为 d = 2;
前N项和为 s = (a1 + a1 + d * (n - 1)) * n / 2 = n * n;

所以 n = sqrt(s)。这里的s就是题中的n,这里的n则是题中的day。
sqrt(s)很多时候不是整数,而是一个小数。这个小数的意义是什么呢?它表示最后剩下的桃子不足以吃一顿,但毕竟也不是前一天能吃完的。
所以最后的结果要对n进行上取整。上一贴中小蔡最后的问题,ceil就是一个上取整函数(准确的说是返回不小于参数的最小整数,在参数为负数时注意这一定义)。

应用这一规律的算法将只有一行代码,效率的差别就不用我说了吧。
你的这个效率简直是非常之快

认为事物非黑即白是缺智慧的表现……
2011-12-21 20:14
龙添羽
Rank: 2
等 级:论坛游民
帖 子:10
专家分:17
注 册:2011-12-3
收藏
得分:2 
哇!如果n足够的话那它不是要被撑死

“传说中的爷,武功在好也怕菜刀!!!!!!!!!!!!”
2011-12-22 12:05
请问你好吗
Rank: 2
等 级:论坛游民
帖 子:64
专家分:51
注 册:2011-11-27
收藏
得分:2 
i*2-1是猴子第n天吃的桃子数
2011-12-22 12:48
请问你好吗
Rank: 2
等 级:论坛游民
帖 子:64
专家分:51
注 册:2011-11-27
收藏
得分:0 
for(i = 1; flag; i++)什么意思
2011-12-22 13:24
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 24楼 请问你好吗
标志这天有没有桃子吃,flag为0就表示没桃子了,循环就结束。

梅尚程荀
马谭杨奚







                                                       
2011-12-22 14:04
快速回复:小猴喜欢吃桃,吃法有点怪,第一天吃1个,以后每天吃的数量比前一天吃 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014294 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved