母牛的故事
该题一开始就想模拟做,然后模拟了下过程发现了这个数列是1,2,3,4,6,9,13,可以发现递推式a[i] = a[i-3] + a[i-1],这样我们应该就能算出结果.
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn =1000 + 10;
int a[maxn];
int n;
void solve()
{
a[1] = 1;
a[2] =2;
a[3] = 3;
a[4] = 4;
for(int i = 4;i<=56;i++)
{
a[i] = a[i-3] + a[i-1];
}
int n;
while(scanf("%d",&n)!=EOF)
{
if(n==0) break;
printf("%d\n",a[n]);
}
}
int main()
{
solve();
return 0;
}
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
import java.util.Stack;
import java.lang.Math;
public class Main
{
Scanner cin = new Scanner(new BufferedInputStream(System.in));
int n;
int[] a = new int[100+10];
void solve()
{
a[1] =1;
a[2] =2;
a[3] = 3;
a[4] = 4;
for(int i = 4;i<=56;i++)
{
a[i] = a[i-3] + a[i-1];
}
int n;
while(true)
{
n = cin.nextInt();
if(n==0) break;
System.out.println(a[n]);
}
}
public static void main(String[] args)
{
new Main().solve();
}
}