zoukankan      html  css  js  c++  java
  • AC日记——[FJOI2007]轮状病毒 bzoj 1002

    1002

    思路:

      打表找规律:

        dp[i]=dp[i-1]*3-dp[i-2]+2;

      套个高精就a了;

    代码:

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    struct NumberType {
        int len;
        
        int ai[101];
        
        void print()
        {
            for(int i=len;i>0;i--) putchar(ai[i]+'0');
        }
        
        void mul(NumberType a)
        {
            len=a.len;
            for(int i=a.len;i>0;i--) ai[i]=a.ai[i]*3;
            for(int i=1;i<=a.len;i++) ai[i+1]+=ai[i]/10,ai[i]%=10;
            while(ai[len+1]) len++;
        }
        
        void minus(NumberType a)
        {
            for(int i=1;i<=len;i++)
            {
                if(ai[i]<a.ai[i]) ai[i]+=10,ai[i+1]--;
                ai[i]-=a.ai[i];
            }
            while(!ai[len]) len--;
        }
        
        void updata()
        {
            ai[1]+=2;
            for(int i=1;i<=len;i++)
            {
                if(ai[i]>9) ai[i]-=10,ai[i+1]+=1;
                else break;
            }
            while(ai[len+1]) len++;
        }
    };
    struct NumberType dp[106];
    
    int n;
    
    int main()
    {
        scanf("%d",&n);
        dp[0].len=1,dp[1].len=1,dp[1].ai[1]=1;
        for(int i=2;i<=n;i++) dp[i].mul(dp[i-1]),dp[i].minus(dp[i-2]),dp[i].updata();
        dp[n].print();
        return 0;
    }
  • 相关阅读:
    笔试
    Java
    工作中问题总结
    suitcrm安装及虚拟机
    python邮件读取2
    restful api
    python 邮件读取
    suiteCRM____Admin
    pdf提取信息到excel
    Maven笔记
  • 原文地址:https://www.cnblogs.com/IUUUUUUUskyyy/p/6851727.html
Copyright © 2011-2022 走看看