#include<iostream> using namespace std; int f[100000]; struct node {     int born;     int num; }p[100000]; int main() {     int n;     p[1].born=1;p[1].num=1;     p[2].born=0;p[2].num=1;     p[3].born=1;p[3].num=2;     for(int i=4;i<=10;i++){         p[i].num=p[i-1].num+p[i-2].num;         if(i>=8){//不能生育的                 p[i].num=p[i].num-p[i-7].born;                 if(i>=9)p[i].num=p[i].num-p[i-8].born;                 if(i>=10)p[i].num=p[i].num-p[i-9].born;         }         p[i].born=p[i].num-p[i-1].num;         if(i>=11)p[i].num-=p[i-10].born*2;//死亡的         //cout<<i<<" "<<p[i].born<<" "<<p[i].num<<endl;     }     for(int i=11;i<=30000;i++){         int sum=0;         for(int j=i-6;j<=i-2;j++)           sum+=p[j].born;         p[i].born=sum;         //cout<<i<<" "<<sum<<endl;       p[i].num=p[i-1].num+sum-p[i-10].born;     }     while(cin>>n)     cout<<p[n].num<<endl;     return 0; }
点赞 3

相关推荐

不愿透露姓名的神秘牛友
12-17 17:40
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务