3523 - 杰克的小牛
若一头小母牛,从出生起第四个年头开始每年生一头母牛,杰克第一年有一头刚出生的小母牛,问第
n 年杰克共有几头母牛?
题目输入
第一行一个整数 t (t < 50),表示 t 组数据;
下面每行一个整数 n (n < 50)。
题目输出
对于每组数据 n ,输出第 n 年杰克有多少头牛。
输入/输出样例
题目输入
3 1 3 4
题目输出
1 1 2
C语言解答
#include<stdio.h> int main() { int i,m,n,a[100]={0,1,1}; scanf("%d",&n); while(n--) { scanf("%d",&m); for(i=3;i<=m;i++) a[i]=a[i-1]+a[i-3]; printf("%d\n",a[m]); } return 0; }
C++解答
#include <cstdio> #include <iostream> #define for1( i , a , b ) for( int i = a ; i <= b ; i++ ) using namespace std ; class Jack { public: void play() ; protected: int n , a , f[ 55 ]; } ; void Jack::play() { //freopen( "in.txt" , "r" , stdin ) ; //freopen( "out.txt" , "w" , stdout ) ; f[ 1 ] = f[ 2 ] = f[ 3 ] = 1 ; for1( i , 4 , 50 ) f[ i ] = f[ i - 1 ] + f[ i - 3 ] ; scanf( "%d" , &n ) ; while( n-- ) { scanf( "%d" , &a ) ; printf( "%d\n" , f[ a ] ) ; } } int main() { Jack J ; J.play() ; return 0 ; }