zoukankan      html  css  js  c++  java
  • 卡特兰数

    http://blog.csdn.net/hackbuteer1/article/details/7450250
    //AW程序
    #include <iostream>
    #include <cstdio>
    #include <iomanip>
    #include <cstring>
    #define max 101
    #define maxnum 60
    #define maxint 10000
    using namespace std;
    struct bigint
    {
     int perint[maxnum];
     bigint()
     {
      for(int i = 0;i < maxnum;i++)
       perint[i] = 0;
     }
     bigint(const bigint & b)
     {
      for(int i = 0;i < maxnum;i++)
       perint[i] = b.perint[i];
     }
     bigint & operator*(int & b)
     {
    //  cout << "mul "  << b << endl;
      int c = 0,cur;
      bigint t;
      for(int i = 0;i < maxnum;i++)
      {
    //   if(!c && i)
    //    break;
       cur = perint[i] * b + c;
       t.perint[i] = cur % maxint;
       c = cur / maxint;
    //   cout << "mul " << cur << " " << c << endl;
      }
      return t;
     }
     bigint & operator/(int & b)
     {
    //  cout << "div "  << b << endl;
    //  cout << "this " << *this << endl;
      int c = 0,cur,s;
      bigint t;
      for(int i = maxnum - 1;i >=0 ;i--)
       if(perint[i])
       {
        s = i;
        break;
       }
      for(int i = s;i >=0 ;i--)
      {
       cur = c * maxint + perint[i];
       t.perint[i] = cur / b;
    //   cout << "t " << t.perint[i] << endl;
       c = cur % b;
    //   cout << "div " << cur / b << " " << c << endl;
      }
    //  cout << t << endl;
      return t;
     }
     friend ostream & operator<<(ostream &out,bigint b)
     {
      int s;
      for(int i = maxnum - 1;i >=0 ;i--)
       if(b.perint[i])
       {
        s = i;
        break;
       }
      out << b.perint[s];
      for(int i = s - 1;i >= 0;i--)
       if(b.perint[i])
        out << setfill('0') << setw(4) << b.perint[i];
         return out;
     }
    };
    bigint train[max];
    int main()
    {
     int a,b,r;
     train[0].perint[0] = 1;
     train[1].perint[0] = 1;
     train[2].perint[0] = 2;
    // cout << train[0] << endl;
     cout << train[1] << endl;
     cout << train[2] << endl;
     for(int i = 3;i < max;i++)
     {
      a = 4*i-2;
      b = i + 1;
      train[i] = train[i-1] * a;
      train[i] = train[i] / b;
      cout << train[i] << endl;
     }
     while(cin >> r)
     {
      cout << train[r] << endl;
     }
     return 0;
    }
    //AC打表
    #include <iostream>
    #define maxn 100
    using namespace std;
    string tab[maxn] = {
     "1",
     "2",
     "5",
     "14",
     "42",
     "132",
     "429",
     "1430",
     "4862",
     "16796",
     "58786",
     "208012",
     "742900",
     "2674440",
     "9694845",
     "35357670",
     "129644790",
     "477638700",
     "1767263190",
     "6564120420",
     "24466267020",
     "91482563640",
     "343059613650",
     "1289904147324",
     "4861946401452",
     "18367353072152",
     "69533550916004",
     "263747951750360",
     "1002242216651368",
     "3814986502092304",
     "14544636039226909",
     "55534064877048198",
     "212336130412243110",
     "812944042149730764",
     "3116285494907301262",
     "11959798385860453492",
     "45950804324621742364",
     "176733862787006701400",
     "680425371729975800390",
     "2622127042276492108820",
     "10113918591637898134020",
     "39044429911904443959240",
     "150853479205085351660700",
     "583300119592996693088040",
     "2257117854077248073253720",
     "8740328711533173390046320",
     "33868773757191046886429490",
     "131327898242169365477991900",
     "509552245179617138054608572",
     "1978261657756160653623774456",
     "7684785670514316385230816156",
     "29869166945772625950142417512",
     "116157871455782434250553845880",
     "451959718027953471447609509424",
     "1759414616608818870992479875972",
     "6852456927844873497549658464312",
     "26700952856774851904245220912664",
     "104088460289122304033498318812080",
     "405944995127576985730643443367112",
     "1583850964596120042686772779038896",
     "6182127958584855650487080847216336",
     "24139737743045626825711458546273312",
     "94295850558771979787935384946380125",
     "368479169875816659479009042713546950",
     "1440418573150919668872489894243865350",
     "5632681584560312734993915705849145100",
     "22033725021956517463358552614056949950",
     "86218923998960285726185640663701108500",
     "337485502510215975556783793455058624700",
     "1321422108420282270489942177190229544600",
     "5175569924646105559418940193995065716350",
     "20276890389709399862928998568254641025700",
     "79463489365077377841208237632349268884500",
     "311496878311103321137536291518809134027240",
     "1221395654430378811828760722007962130791020",
     "4790408930363303911328386208394864461024520",
     "18793142726809884575211361279087545193250040",
     "73745243611532458459690151854647329239335600",
     "289450081175264899454283846029490767264392230",
     "1136359577947336271931632877004667456667613940",
     "4462290049988320482463241297506133183499654740",
     "17526585015616776834735140517915655636396234280",
     "68854441132780194707888052034668647142985206100",
     "270557451039395118028642463289168566420671280440",
     "1063353702922273835973036658043476458723103404520",
     "4180080073556524734514695828170907458428751314320",
     "16435314834665426797069144960762886143367590394940",
     "64633260585762914370496637486146181462681535261000",
     "254224158304000796523953440778841647086547372026600",
     "1000134600800354781929399250536541864362461089950800",
     "3935312233584004685417853572763349509774031680023800",
     "15487357822491889407128326963778343232013931127835600",
     "60960876535340415751462563580829648891969728907438000",
     "239993345518077005168915776623476723006280827488229600",
     "944973797977428207852605870454939596837230758234904050",
     "3721443204405954385563870541379246659709506697378694300",
     "14657929356129575437016877846657032761712954950899755100",
     "57743358069601357782187700608042856334020731624756611000",
     "227508830794229349661819540395688853956041682601541047340",
     "896519947090131496687170070074100632420837521538745909320",
    };
    int main()
    {
     int r;
     while(cin >> r)
     {
      cout << tab[r-1] << endl;
     }
     return 0;
    }
    ----------------------------------------------------------------------------------
    It is your time to fight!
  • 相关阅读:
    centos 系统时间设置
    centos6 centos7 配置开机启动服务
    centos6.9 samba配置
    vmware异常关闭后导致虚拟机无法打开问题解决办法
    try using -rpath or -rpath-link
    ZR#988
    提高十连测day3
    Atcoder ABC 141
    ZR#957
    ST表
  • 原文地址:https://www.cnblogs.com/hua-dong/p/7603929.html
Copyright © 2011-2022 走看看