免费注册 查看新帖 |

Chinaunix

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

一道关于蜗牛爬绳子的题目。 [复制链接]

论坛徽章:
0
131 [报告]
发表于 2007-10-17 17:28 |只看该作者
/*
* 创建日期 2007-10-16
*
* 更改所生成文件模板为
* 窗口 > 首选项 > Java > 代码生成 > 代码和注释
*/
package com.hexin;

/**
* @author Administrator
*
* 一根象皮绳长1000米,一只蜗牛在绳子的一端,朝向另一端爬行。蜗牛每个白天爬
* 1米,晚上休息。绳子每个晚上会均匀拉长1000米。
* 假设蜗牛体力和绳子韧性都充分好,问最后蜗牛能否爬到绳子的另一端?如果可以,
* 需要爬行多少天?
*/
public class One {
       
        int days = 0;

        /**
         * length = 1000;初始距离
         * a = (length-move)(1+up/length) 第一天后还剩的距离
         * b = (a-move)*(up/a+a)
         *   .
         *   .
         *   .
         * x = (x-1-move)*(up/(x-1)+x-1) 最后一天还剩小于等于move米
         * @param length 初始距离
         * @param move 每天移动的距离
         */
        public long getDays(float length,float up,float move){
                move(length,up,move);
                return days;
        }
       
        private void move(float length,float up,float move){
                if(length <= move){
                        ++days;
                        return;
                }
                float f = up/(length+up*days);
                length = (length-move)*(1+f);
                ++days;
                move(length,up,move);
        }
       
       
        public static void main(String[] args) {
                One o = new One();
                System.out.println(o.getDays(2,2,1));
        }
}

论坛徽章:
0
132 [报告]
发表于 2007-10-17 17:43 |只看该作者
首先解释下均匀拉长的意思:
   设第 n 天牛牛距离绳起始 x 米,绳长 rop_len 米, 均匀拉长 len 米后牛牛距离起始 y 米
   那么均匀拉长意思是 牛牛距离绳子两端距离的比例不变即:
        x/(rop_len-x) = y/(rop_len + len - y)   =>解之得: y = (1+len/rope_len)x

这个是原理,下面是程序:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    float __add_len = 1;
    float __rope_len = 2;
    float __dist = 0;
    int __day = 0;

    while(__dist < __rope_len){
        __day++;
        __dist++;
        __dist = (1 + (__add_len / __rope_len)) * __dist;
        __rope_len += __add_len;
    }

    printf("__rope_len is %f, __dist is %f\n",__rope_len, __dist);
    printf("consume day is %d\n", __day);
    return 0;
}

论坛徽章:
0
133 [报告]
发表于 2007-10-18 00:49 |只看该作者
怎么还是有人试图编写程序来转这个题?就算喜欢编程,也该是对极大的N值,编程精确快速计算1+1/2+1/3+...+1/N的问题了吧?

论坛徽章:
0
134 [报告]
发表于 2007-10-18 11:58 |只看该作者

回复 #132 catmonkey_lee 的帖子

凡是类似这样的求解程序都是错误的.因为大部分分数值得到都是近似值,所以得近似值加近似值,最后越差越远.
最好用数学表达式解析得出更简单的求解式.

[ 本帖最后由 newttle 于 2007-10-18 12:00 编辑 ]

论坛徽章:
0
135 [报告]
发表于 2007-10-18 16:30 |只看该作者

回复 #101 ddvv 的帖子

牛牛爬的位置占蝇子长度的比值是越来越趋向于1
现在就要证明它的根限是否为1就行了

论坛徽章:
0
136 [报告]
发表于 2007-10-18 22:36 |只看该作者
http://www.zhishie.com/baike/kexue/293/98209.htm
既然欧拉已经证明sn->无穷大,
所以蜗牛肯定可以爬到终点
也该安息了
flypanda 该用户已被删除
137 [报告]
发表于 2007-10-18 22:43 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
138 [报告]
发表于 2007-10-26 17:22 |只看该作者
#include<iostream.h>

long double a=1000.0,b=1.0;                          //a:蝇长  b:已完成长度
long c=1,d=1000,step=1;                              //c:天数  d:每天拉伸长度  step:步长

main()
{
  while(b<=a)
  {
//  cout<<"\n a:"<<a<<"   b:"<<b<<"   c:"<<c<<"\n";
    b=(b/a)*(a+d);
    a=a+d;
    b=b+step;
    c++;
  };
  cout<<"\n a:"<<a<<"   b:"<<b<<"   c:"<<c<<"\n";     //输出结果,a:蝇子总长度, b:已经完成长度, c:天数
  return 0;
}


//  这样行不?谁有兴趣跑一下? long double 精度有限,结果可能不准确,也很有可能会溢出。

[[i] 本帖最后由 abc3w 于 2007-10-26 17:29 编辑 [/i]]

论坛徽章:
0
139 [报告]
发表于 2007-10-26 22:59 |只看该作者
牛打三鞭知道转弯。

论坛徽章:
0
140 [报告]
发表于 2007-10-27 10:36 |只看该作者
第一天蜗牛爬的距离占总长度的比例:f(1)=1/1000
第二天蜗牛爬的距离占总长度的比例:f(2)=[f(1)*(2*1000)+1]/(2*1000)=[(1/1000)*(2*1000)+1]/(2*1000)
第三天蜗牛爬的距离占总长度的比例:f(3)=[f(2)*(3*1000)+1]/(3*1000)
。。。。。。。
第 i 天蜗牛爬的距离占总长度的比例:f(i)=[f(i-1)*(i*1000)+1]/(i*1000)

如果这个比例趋近于1,那么蜗牛就肯定可以爬到终点。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP