母牛的故事hdu2018

来源:互联网 发布:单片机 内存碎片 编辑:程序博客网 时间:2024/05/16 09:03

母牛的故事
该题一开始就想模拟做,然后模拟了下过程发现了这个数列是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();    }}
0 0