11.27 愚公家族多少人&&僵尸大战加特林

今天的。每日两题。都挺有意思(大声bb)

第一题:

题目

我读书少,你们得帮帮我

Description

这是一题简单的题目,考的只是你的数学而已。我一直都很好奇愚公一家到底有多少人。好吧,毛学姐说你们会帮我的。假设愚公家族 每个人的一生是这样度过的:(当他回首往事的时候。。。开个玩笑,请无视) 头20年用来生长发育以及挖山,第21年(可以理解为21岁的时候)开始 每年生下一个孩子( 自交,任性, 没妻子,全生男,且不考虑死亡),当然还要去挖山。我们默认愚公11岁的时候为第一年(第21年愚公生下第一胎),求第NN年愚公家族(愚公家族不需要妻子,别考虑太多)有多少人。

Input

有多组测试数据,每组占一行,包括一个数N(0<N<=60)N(0<N<=60),N为第N年。

Output

对于每组测试,输出整数M,M为愚公家族的人数。

Sample Input 1

1
21
41

Sample Output 1

1
2
23


解题

好像记得天祚大佬讲过一个生兔子的问题(类似于一个斐波那契数列)
从网上找了一个相关的文章:我是文章的传送门T^T
21天成年就可以生子。所以说,愚公的后代们生长20年就可以生子了
所以这里定义第n天愚公家族共有f(n)个人,那么前一天是f(n-1)个人,在昨天到今天增长了多少呢,f(n-1+21)=f(n-20)。
结果就推出这样的一个式子:f(n)=f(n-1)+f(n-20)
显而易见,用递归算法来计算就可以了。

#include<stdio.h>
int f(int n)
{
    if(n>=0&&n<21)
    {
        return 1;
    }
    else if(n>=21)
    {
        return f(n-1)+f(n-20);
    }
}
int main()
{
    int n=0;
    int m=0;
    while(scanf("%d",&n)!=EOF)
    {
        m=f(n);
        printf("%d\n",m);
    }
    return 0;
}

第二题

题目

加特林大战僵尸

Description

现在又到了毛学姐玩生化危机的时间,问题很简单。现在有一把自动加特林机枪,它每秒发射一颗子弹,子弹的飞行速度是V0。在它的面前有L米的空地,你可以假设机枪是一个点。现在有个一只僵尸来袭,他以速度V1匀速向加特林机枪走去。僵尸被加特林子弹击中n次才会gg,僵尸在走到加特林机枪的位置后,会用酸液对其进行攻击,只需2s就能摧毁加特林。问:强大的加特林机枪能不能守住这块空地呢?

Input

输入包含多组数据,每组包含四个数L,V0,V1,n。保证所有数据在int类型范围内。

Output

如果加特林能干掉僵尸,请输出"YES",否则输出"NO"。

Sample Input 1

657 62 46 46
771 89 7 2

Sample Output 1

NO
YES

Hint

为了简化情况,不会出现僵尸和加特林同归于尽(一起死亡)的情况


解题

加特林发射子弹的速度就是个幌子!
加特林每秒发射一个子弹。也就是说,僵尸走了多少秒,他就最多(因为僵尸有可能半路死了)受了多少发子弹。那么时间=子弹数。
就有了这样的一个公式:n1=t=l/v1+2
然后判断n1和n的大小关系就好了!

#include<stdio.h>
int main()
{
    int l,v0,v1,n;
    double t;
    while(scanf("%d %d %d %d",&l,&v0,&v1,&n)!=EOF)
    {
        t=l/v1+2;
        if(t>=n)
        {
            printf("YES\n");
        }
        else if(t<n)
        {
            printf("NO\n");
        }
    }
    return 0;
}


猜你喜欢

转载自blog.csdn.net/qq_42906486/article/details/84564192