题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1089

f[d]为深度小于等于d的树的个数;

从根节点出发,有n个子树,乘法原理可以得到 f[d] = f[d-1] ^ n + 1 ,加1是因为也可以没有根节点;

需要高精度,直接重载运算符十分方便。

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int const rad=;
int n,d;
struct data{
int v[],l;
}f[];
data operator*(data a,data b)
{
data c;
for(int i=;i<=a.l+b.l;i++)c.v[i]=;
for(int i=;i<=a.l;i++)
for(int j=;j<=b.l;j++)
c.v[i+j-]+=a.v[i]*b.v[j];
c.l=a.l+b.l;
for(int i=;i<=c.l;i++)
{
if(c.v[i]>=rad)
{
if(i==c.l)
{
c.l++;
c.v[c.l]=c.v[i]/rad;
}
else c.v[i+]+=c.v[i]/rad;
c.v[i]%=rad;
}
}
while(c.v[c.l]==&&c.l>)c.l--;
return c;
}
data operator^(data a,int n)
{
data c;
c.l=;c.v[]=;
while(n)
{
if(n&)c=c*a;
a=a*a;
n>>=;
}
return c;
}
data operator+(data a,int x)
{
a.v[]+=x;
int now=;
while(a.v[now]>=rad)a.v[now+]+=a.v[now]/rad,a.v[now]%=rad,now++;
a.l=max(a.l,now);
return a;
}
data operator-(data a,data b)
{
for(int i=;i<=a.l;i++)
{
a.v[i]-=b.v[i];
if(a.v[i]<)
{
a.v[i]+=rad;
a.v[i+]--;
}
}
while(a.v[a.l]==&&a.l>)a.l--;
return a;
}
//void print(data a)
//{
// for(int i=a.l;i;i--)
// printf("%d",a.v[i]);
//}
void print(data a)
{
printf("%d",a.v[a.l]);
for(int i=a.l-;i;i--)
printf("%03d",a.v[i]);
printf("\n");
}
int main()
{
scanf("%d%d",&n,&d);
if(d==)
{
printf("");return ;
}
f[].l=;f[].v[]=;
for(int i=;i<=d;i++)
f[i]=(f[i-]^n)+;//+ 必须加括号!!!
print(f[d]-f[d-]);
return ;
}

最新文章

  1. 今天心情好,一起探讨下《送给大家的200兆SVN代码服务器》怎么管理我们的VS代码?
  2. 很少有人会告诉你的Android开发基本常识
  3. WCF 入门 (16)
  4. JPA EntityManager详解(一)
  5. Java高级开发工程师
  6. UVa 12096 (STL) The SetStack Computer
  7. BeanFactory not initialized or already closed - call &#39;refresh&#39; before access
  8. C#读取Exeal文件
  9. Azure IoT Hub和Event Hub相关的技术系列-索引篇
  10. 快学scala
  11. ssh无密码登录远程主机
  12. [leetcode-560-Subarray Sum Equals K]
  13. 解决NTPD漏洞,升级Ntpd版本
  14. arm-点亮led灯
  15. 【转】Nginx 学习笔记(十一)nginx下安装配置naxsi waf防火墙(附完整编译、配置)
  16. jquery获取value值时将数字型字符串前面的0自动截取处理方法
  17. Ubuntu17.04 sudo apt-get update升级错误
  18. Node.js实战项目学习系列(3) CommonJS 模块化规范
  19. Python3学习之路~9.1 paramiko模块:实现ssh执行命令以及传输文件
  20. 【Alpha】Scrum Meeting 8

热门文章

  1. Vim出现:_arguments:450: _vim_files: function definition file not found的问题解决
  2. elasticsearch学习网站
  3. window7_64安装STAF
  4. hdu 4858 项目管理(vector模拟)
  5. Spyder的汉化
  6. JavaScript 的 MVP 框架 Riot.js
  7. WebGIS中地图恢复初始位置及状态
  8. Web 监听器
  9. 使用Java绘制验证码
  10. idea 破解注册方法总结