• bzoj1089


    题解:

    递推

    f[i]=f[i-1]^n+1

    ans=f[d]-f[d-1]

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    int n,m;
    struct zz
    {
        int len,a[5005];
        void init()
         {
             memset(a,0,sizeof a);
             len=0;
         }
        void write()
         {
             printf("%d",a[len]);
             for (int i=len-1;i;i--)
              {
                  if (a[i]<10)putchar('0');
                  if (a[i]<100)putchar('0');
                  if (a[i]<1000)putchar('0');
                  printf("%d",a[i]);
              }
         } 
    }f[30];
    zz cf(zz x,zz y)
    {
        zz z;
        z.init();
        z.len=x.len+y.len-1;
        for (int i=1;i<=x.len;i++)
         for (int j=1;j<=y.len;j++)
          z.a[i+j-1]+=x.a[i]*y.a[j];
        for (int i=1;i<=z.len;i++)
         {
             z.a[i+1]+=z.a[i]/10000;
             z.a[i]%=10000;
         }  
        if (z.a[z.len+1])z.len++; 
        return z; 
    }
    zz jf(zz z)
    {
        z.a[1]++;
        for (int i=1;i<=z.len;i++)
         {
             z.a[i+1]+=z.a[i]/10000;
             z.a[i]%=10000;
         }  
        if (z.a[z.len+1])z.len++; 
        return z;          
    }
    zz zf(zz x,zz y)
    {
        for (int i=1;i<=x.len;i++)
         {
             x.a[i]-=y.a[i];
             if (x.a[i]<0)x.a[i+1]--,x.a[i]+=10000;
         }
        while (x.len>1&&x.a[x.len]==0)x.len--;
        return x; 
    }
    int main()
    {
        scanf("%d%d",&n,&m);
        if (m==0)
         {
             puts("1");
             return 0;
         }
        f[0].a[1]=f[0].len=1;
        for (int i=1;i<=m;i++)
         {
             f[i].a[1]=f[i].len=1;
             for (int j=1;j<=n;j++)
              f[i]=cf(f[i],f[i-1]);
             f[i]=jf(f[i]); 
         }
        zz ans=zf(f[m],f[m-1]);
        ans.write();
    }
  • 相关阅读:
    复(学)习化学时突然的一个 idea
    [BZOJ3032]七夕祭
    [BZOJ3781]小B的询问
    [BZOJ4103][Thu Summer Camp 2015]异或运算
    [BZOJ4817][Sdoi2017]树点涂色
    [BZOJ2506]calc
    [BZOJ1283]序列
    win 解除鼠标右键关联
    linux 常用shell命令之wc
    shell cat 合并文件,合并数据库sql文件
  • 原文地址:https://www.cnblogs.com/xuanyiming/p/8456510.html
Copyright © 2020-2023  润新知