Description
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
Input
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n=0表示输入数据的结束,不做处理。
Output
对于每个测试实例,输出在第n年的时候母牛的数量。
每个输出占一行。
Sample Input
2 4 5 0
Sample Output
2 4 6题解:第i年的牛(i>4)就等于3年前牛(因为这些牛在今年都会再生牛)+去年的所有牛。dp[i] = dp[i-3]+dp[i-1];数据比较大,需要用long long
#include<cstdio> #include<cstring> #include<iostream> #include<stdlib.h> #include<vector> #include<queue> #include<cmath> using namespace std; #define maxn 100 #define oo 0x3f3f3f #define PI 3.1415926535897932 int n; int k; long long dp[maxn]; void init() { for(int i=5; i<=maxn; i++) dp[i] = dp[i-3] + dp[i-1]; } int main() { int t,m; while(scanf("%d",&m),m) { dp[1] = 1; dp[2] = 2; dp[3] = 3; dp[4] = 4; init(); printf("%I64d\n",dp[m]); } return 0; }
时间: 2024-11-05 14:39:55