【HDU 2160】母猪的故事

Description

话说现在猪肉价格这么贵,著名的ACBoy 0068 也开始了养猪生活。说来也奇怪,他养的猪一出生第二天开始就能每天中午生一只小猪,而且生下来的竟然都是母猪。 
不过光生小猪也不行,0068采用了一个很奇特的办法来管理他的养猪场: 
对于每头刚出生的小猪,在他生下第二头小猪后立马被杀掉,卖到超市里。 
假设在创业的第一天,0068只买了一头刚出生的小猪,请问,在第N天晚上,0068的养猪场里还存有多少头猪?

Input

测试数据的第一行包含有一个正整数T,代表测试数据的个数。接下来有T组测试,每组测试数据占一行,分别有一个正整数N代表0068创业的第N天。(0<N<20)

Output

对于每组数据,请在一行里输出第N天晚上养猪场里猪的数目。

Sample Input

2
2
3

Sample Output

2
3

题意:每只猪出生后第二天开始每天生一只猪,生了两只小猪后,被杀掉,第一天有一只刚出生的猪,求第N天晚上有几只猪。

分析:第i天晚上有s[i]头猪,要杀掉的猪=前天出生的猪。今天的=2*昨天的-前天出生的,前天出生的=大前天的数量,得到递推1:s[i]=2*s[i-1]-s[i-3],

#include<stdio.h>
int t,n,ans[25]={0,1,2,3};
int main(){
    scanf("%d",&t);
    while(t--){
        scanf("%d",&n);
        for(int i=4;i<=n;i++)
            ans[i]=ans[i-1]*2-ans[i-3];
        printf("%d\n",ans[n]);
    }
    return 0;
} 

  

前天出生的=昨天的-前天的,得到递推2:s[i]=s[i-1]+s[i-2]

#include<stdio.h>
int t,n,ans[25]={0,1,2};
int main(){
    scanf("%d",&t);
    while(t--){
        scanf("%d",&n);
        for(int i=3;i<=n;i++)
            ans[i]=ans[i-1]+ans[i-2];
        printf("%d\n",ans[n]);
    }
    return 0;
}
时间: 2024-12-15 08:39:17

【HDU 2160】母猪的故事的相关文章

HDU 2106 母猪的故事

http://acm.hdu.edu.cn/showproblem.php?pid=2160 Problem Description 话说现在猪肉价格这么贵,著名的ACBoy 0068 也开始了养猪生活.说来也奇怪,他养的猪一出生第二天开始就能每天中午生一只小猪,而且生下来的竟然都是母猪.不过光生小猪也不行,0068采用了一个很奇特的办法来管理他的养猪场:对于每头刚出生的小猪,在他生下第二头小猪后立马被杀掉,卖到超市里.假设在创业的第一天,0068只买了一头刚出生的小猪,请问,在第N天晚上,00

C题 hdu 1408 盐水的故事

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1408 盐水的故事 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 14968    Accepted Submission(s): 3645 Problem Description 挂盐水的时候,如果滴起来有规律,先是滴一滴,停一下:然后滴二

HDU 小明系列故事——师兄帮帮忙 快速幂

小明系列故事--师兄帮帮忙 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 4850    Accepted Submission(s): 1275 Problem Description 小明自从告别了ACM/ICPC之后,就开始潜心研究数学问题了,一则可以为接下来的考研做准备,再者可以借此机会帮助一些同学,尤其是漂亮的师妹.这不,班

Hdu 2018母牛的故事

母牛的故事 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 83526    Accepted Submission(s): 41487 Problem Description 有一头母牛,它每年年初生一头小母牛.每头小母牛从第四个年头开始,每年年初也生一头小母牛.请编程实现在第n年的时候,共有多少头母牛? Input 输入数据由多个测试

HDU-2160 母猪的故事

Description 话说现在猪肉价格这么贵,著名的ACBoy 0068 也开始了养猪生活.说来也奇怪,他养的猪一出生第二天开始就能每天中午生一只小猪,而且生下来的竟然都是母猪.不过光生小猪也不行,0068采用了一个很奇特的办法来管理他的养猪场:对于每头刚出生的小猪,在他生下第二头小猪后立马被杀掉,卖到超市里.假设在创业的第一天,0068只买了一头刚出生的小猪,请问,在第N天晚上,0068的养猪场里还存有多少头猪? Input 测试数据的第一行包含有一个正整数T,代表测试数据的个数.接下来有T

hdu 2018 母牛的故事(java)

问题: 此题主要是一个递推算法,审题要仔细,小母牛是自它被生下开始第四年开始产子,递归公式为n=a(n-1)+(n-3). 之前看过别人的算法用了大数,其实没必要,在范围内int就可以装下. 母牛的故事 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 51574    Accepted Submission(s): 25849 Prob

hdu 2160 Sequence one(DFS)

1 #include <iostream> 2 #include <vector> 3 #include <algorithm> 4 #include <cstdio> 5 #include <memory.h> 6 using namespace std; 7 #define MAXN 20002 8 9 10 //适用于正整数 11 template <class T> 12 inline void scan_d(T &r

hdu 1408 盐水的故事

Problem Description 挂盐水的时候,如果滴起来有规律,先是滴一滴,停一下:然后滴二滴,停一下:再滴三滴,停一下...,现在有一个问题:这瓶盐水一共有VUL毫升,每一滴是D毫升,每一滴的速度是一秒(假设最后一滴不到D毫升,则花费的时间也算一秒),停一下的时间也是一秒这瓶水什么时候能挂完呢? Input 输入数据包含多个测试实例,每个实例占一行,由VUL和D组成,其中 0<D<VUL<5000. Output 对于每组测试数据,请输出挂完盐水需要的时间,每个实例的输出占一行

hdu 2018 母牛的故事(递推)

第i年的牛数=第i-1年的+第i-1年能生的 dp[i] = dp[i-1] + dp[i-3]; ( i >= 4 ) #include <iostream> #include <cstdio> using namespace std; int dp[60]; int main() { dp[1] = 1; dp[2] = 2; dp[3] = 3; for( int i = 4; i <= 55; i++ ) dp[i] = dp[i-1] + dp[i-3]; i