zoukankan      html  css  js  c++  java
  • 题解 P2532 【[AHOI2012]树屋阶梯】

    此题就是一个卡兰特数列,用个高精就行 = = // luogu-judger-enable-o2

    include<bits/stdc++.h>

    define me(a) memset(a,0,sizeof(a))

    //#pragma GCC optimize(0)//o0优化

    //#pragma GCC optimize(2)//o2优化

    //#pragma GCC optimize(3)//o3优化

    using namespace std;

    string h[501];

    string cheng(string x,int y)

    {

    string ans="";
    int a[299];
    me(a);
    int a1,b1,k,r=0;
    a1=x.size();
    for(int i=0;i<a1;i++)
    {
        a[i]=x[a1-i-1]-'0';
    }
    for(int i=0;i<a1;i++)
    {
        a[i]*=y;
    }
    for(int i=0;i<a1;i++)
    {
        if(a[i]>9)
        {
            a[i+1]+=a[i]/10;
            a[i]%=10;
            if(i==a1-1)
            {
                a1++;
            }
        }
    }
    for(int i=a1-1;i>=0;i--)
    {
        ans+=char(a[i]+48);
    }
    return ans;

    }

    string chu(string n,int y)

    {

    int a[299];

    // me(a);

    string ans="";
    int x,yu=0;
    x=n.size();
    for(int i=0;i<x;++i)
    {
        a[i]=(yu*10+(n[i]-'0'))/y;
        yu=(yu*10+(n[i]-'0'))%y;
    }
    int k=0;
    while(a[k]==0&&k<x)
    {
        k++;
    }
    for(int i=k;i<x;++i)
    {
        ans+=char(a[i]+48);
    }
    return ans;

    }

    int main()

    {

    //freopen("ask.in","r",stdin);
    //freopen("ask.out","w",stdout);
    int n;
    cin>>n;
    h[0]="1";
    for(int i=1;i<=n;++i)
    {
        h[i]=chu(cheng(h[i-1],(4*i-2)),i+1);
    }
    cout<<h[n];
    return 0;

    }


    //另,附上O(1)算法(逃:(由于字数限制,只好牺牲小号,来浪一波= =) O(1)算法

  • 相关阅读:
    第三章 p62 或运算
    p57 字符串的长度
    p53 ASCII码
    整数类型,如同时钟
    重要:原码、反码、补码...
    p42 实验溢出(上溢)
    P40 字节单位:KMGT
    p38 二、八、十六进制的对应关系
    p13 数组元素的地址
    p11 内存中的数据和地址
  • 原文地址:https://www.cnblogs.com/ThinkofBlank/p/10146132.html
Copyright © 2011-2022 走看看