zoukankan      html  css  js  c++  java
  • BZOJ-1089: [SCOI2003]严格n元树 (递推+高精度)

    1089: [SCOI2003]严格n元树

    Time Limit: 1 Sec  Memory Limit: 162 MB
    Submit: 1955  Solved: 989
    [Submit][Status][Discuss]

    Description

      如果一棵树的所有非叶节点都恰好有n个儿子,那么我们称它为严格n元树。如果该树中最底层的节点深度为d
    (根的深度为0),那么我们称它为一棵深度为d的严格n元树。例如,深度为2的严格2元树有三个,如下图:

      给出n, d,编程数出深度为d的n元树数目。

    Input

      仅包含两个整数n, d( 0   <   n   <   =   32,   0  < =   d  < = 16)

    Output

      仅包含一个数,即深度为d的n元树的数目。

    Sample Input

    【样例输入1】
    2 2

    【样例输入2】
    2 3

    【样例输入3】
    3 5

    Sample Output

    【样例输出1】
    3

    【样例输出2】
    21

    【样例输出2】
    58871587162270592645034001

    HINT

     

    Source

    阿西吧辣鸡高精度千进制mmp

    python大法好!

    f[i]=f[i-1]^n+1    cout<<f[d]-f[d-1];

    1 n,d=map(int, raw_input().split())
    2 if d==0:
    3     print 1
    4 else:
    5     f=[1]
    6     for i in range(0, d+1):
    7         f.append(f[i]**n+1)
    8     print f[d]-f[d-1]

    laj的辣鸡十进制高精度…… _(:зゝ∠)_

     1 #include "bits/stdc++.h"
     2 using namespace std;
     3 typedef long long LL;
     4 const int MAX=20005;
     5 int n,m;
     6 struct Node{
     7     int a[MAX];
     8     Node (){memset(a,0,sizeof(a));}
     9     Node operator * (const Node &tt) {
    10         Node an;
    11         an.a[0]=a[0]+tt.a[0];
    12         int i,j;
    13         for (i=1;i<=a[0];i++)
    14             for (j=1;j<=tt.a[0];j++)
    15                 an.a[i+j-1]+=a[i]*tt.a[j],
    16                 an.a[i+j]+=an.a[i+j-1]/10,
    17                 an.a[i+j-1]%=10;
    18         while (an.a[an.a[0]]==0) an.a[0]--;
    19         return an;
    20     }
    21     Node operator + (const Node &tt) {
    22         int i,j;
    23         Node an;an.a[0]=max(a[0],tt.a[0])+1;
    24         for (i=1;i<=max(a[0],tt.a[0]);i++){
    25             an.a[i]+=a[i]+tt.a[i];
    26             an.a[i+1]+=an.a[i]/10;
    27             an.a[i]%=10;
    28         }
    29         while (an.a[an.a[0]]==0) an.a[0]--;
    30         return an;
    31     }
    32     Node operator - (const Node &tt) {
    33         int i,j;
    34         Node an; an.a[0]=a[0];
    35         for (i=1;i<=a[0];i++){
    36             if (a[i]<tt.a[i]) a[i+1]--,a[i]+=10;
    37             an.a[i]=a[i]-tt.a[i];
    38         }
    39         while (an.a[an.a[0]]==0) an.a[0]--;
    40         return an;
    41     }
    42     void out(){
    43         int i,j;
    44         for (i=a[0];i>=1;i--) printf("%d",a[i]);
    45     }
    46 }f[55];
    47 Node ksm(Node x,int y){
    48     Node an;an.a[0]=an.a[1]=1;
    49     while (y){
    50         if (y&1) an=an*x;
    51         x=x*x;
    52         y>>=1;
    53     }
    54     return an;
    55 }
    56 int main(){
    57     freopen ("tree.in","r",stdin);freopen ("tree.out","w",stdout);
    58     int i,j;
    59     scanf("%d%d",&n,&m);
    60     f[0].a[0]=f[0].a[1]=1;
    61     for (i=1;i<=m;i++)
    62         f[i]=ksm(f[i-1],n)+f[0];
    63     Node ans=f[m]-f[m-1];
    64     ans.out();
    65     return 0;
    66 }
    未来是什么样,未来会发生什么,谁也不知道。 但是我知道, 起码从今天开始努力, 肯定比从明天开始努力, 要快一天实现梦想。 千里之行,始于足下! ——《那年那兔那些事儿》
  • 相关阅读:
    使用Task创建任务
    动态,静态库的发布和使用
    gcc编译
    knockout.js的学习笔记2
    网络爬虫基本原理(一)
    .Net项目分层与文件夹结构
    ASP.NET MVC的客户端验证:jQuery的验证
    ASP.NET MVC的客户端验证:jQuery验证在Model验证中的实现
    CMake 手册详解
    一个真实的应用程序 — 精通ASP.NET MVC 3
  • 原文地址:https://www.cnblogs.com/keximeiruguo/p/7764617.html
Copyright © 2011-2022 走看看