58编程题-打蚊子

#include <iostream>
#include <cstring>
#include <stdexcept>

using namespace std;

double avgTime(int N)
{
    if(N<0) throw logic_error("error: illegal parameter N(<0) for double avgTime(int N);");
    if(N<=1) return 20*N;//第一次打肯定打死一只蚊子,假设打第一次蚊子也需要耗时20ms,下同
    double E[N];//vla
    memset(E,0,sizeof(E));
    E[1] = 20*N;
    for(int i=2;i<=N-1;++i)
    {
        E[i] = (20*N+i*E[i-1])/static_cast<double>(i);
    }
    return 20+E[N-1];
}

int main(int argc,char *argv[])
{
    int N;
    while(cin>>N)
    {
        cout<<"打死"<<N<<"只蚊子平均时间:"<<avgTime(N)<<"毫秒"<<endl;
    }

    return 0;
}
改过了,应该是对的

#58集团#
全部评论
我说下我的做法,不确定对不对。第一只一定打死,时间0。然后第二只打死概率为p=(n-1)/n,所以时间为20/p。然后第三只p=(n-2)/n,时间20/p,依次求和即可
点赞 回复 分享
发布于 2017-09-17 17:53
考那么多概率题,真是烦哦
点赞 回复 分享
发布于 2017-09-17 20:26
sum(n/i ) i=1....n
点赞 回复 分享
发布于 2017-09-17 20:39

相关推荐

头像
11-09 12:17
清华大学 C++
out11Man:小丑罢了,不用理会
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务