题目背景

上演在各大学男生寝室的日常 ::

A :A: “我没带纸,快来厕所救我!”

B :B: “叫爸爸。”

A :A: “爸爸!”

........................................................................................

A :A: “我没钱了,能借我点吗。”

B :B: “叫爸爸。”

A :A: “爸爸!”

一个月后、

B :B: “能把钱还给我吗。”

A :A: “叫爸爸。”

B :B: “爸爸!”

题目描述

对于全国各大大学的男生寝室,总是有各种混乱的父子关系。

那么假设现在我们一个男生寝室有不同的 \(n\) 个人,每个人都至多有一个“爸爸”,可以有多个“儿子”,且有且只有一个人没有“爸爸”(毕竟是室长,还是要给点面子,当然了,室长人人当嘛)。

那么现在问题来了,对于一个有 \(n\) 个人的寝室,最多可能存在多少种父子关系,当然每个人之间都必须要有直接或间接的父子关系。

输入格式

第一行一个 正整数 \(t\),表示有组数据。

接下来 \(t\) 行,每行一个整数 \(n\),表示有 \(n\) 个人。

输出格式

共 \(t\) 行,每行一个整数,求关系个数。

由于答案可能较大,则我们需要输出答案对 \(1e9+9\) 取模的值。


Cayley定理:过n个有标志顶点的无根树的数目等于n^(n-2)

本题要求有根,那就在原来基础上乘个n

快速幂求解

#include<cstdio>
#include<iostream>
using namespace std;
const int N=3115,mod=1e9+9;
#define int long long
#define LL long long
int ksm(LL n, LL m){
LL ret=1;
while(m){
if(m&1)ret=(ret*n)%mod;
n=n*n%mod; m>>=1;
}
return ret;
}
signed main(){
int t,n;
cin>>t;
while(t--){
scanf("%lld",&n);
printf("%lld\n",ksm(n,n-1));
}
return 0;
}

luogu P4981 父子的更多相关文章

  1. P4430 小猴打架、P4981 父子

    prufer编码 当然你也可以理解为 Cayley 公式,其实这个公式就是prufer编码经过一步就能推出的 P4430 小猴打架 P4981 父子 这俩题差不多 先说父子,很显然题目就是让你求\(n ...

  2. P4981 父子 Cayley公式

    CayleyCayley公式的定义是这样的,对于n个不同的节点,能够组成的无根树(原来是无向连通图或者是有标志节点的树)的种数是n^(n-2)种.(这里让大家好理解一点,就写成了无根树,其实应该是一样 ...

  3. 树的计数 Prufer序列+Cayley公式

    先安利一发.让我秒懂.. 第一次讲这个是在寒假...然而当时秦神太巨了导致我这个蒟蒻自闭+颓废...早就忘了这个东西了... 结果今天老师留的题中有两道这种的:Luogu P4981 P4430 然后 ...

  4. 偶然遇见:Cayley定理

    看到\(purfer\)序列板子后,想到这个名词在哪见过,于是找到了一个题,还带出一个: \(T1\). 题目链接:P4430 小猴打架 开始极其懵逼,考虑过大力容斥,但还是失败了,原来是: Cayl ...

  5. prufer编码学习笔记

    prufer 编码 对于一个无根树,他的 prufer 编码是这样确定的: 每次找到编号最小的一个叶子节点,也就是度数为\(1\)的节点,把和它相连的点,加入 prufer 编码序列的末尾,然后把这个 ...

  6. [Luogu 1196] NOI2002 银河英雄传说

    [Luogu 1196] NOI2002 银河英雄传说 话说十六年前的 NOI 真简单... 我一开始还把题看错了- 题意:一群人,每个人各自成一队,每次命令让两队首位相接合成一队,每次询问问你某两个 ...

  7. 【Luogu P3379】LCA问题的倍增解法

    Luogu P3379 题意:对于两个节点,寻找他们的最近公共祖先. 一个显而易见的解法是对于每一个节点我们都往上遍历一遍,记录下它每一个祖先,然后再从另一个节点出发,一步一步往上走,找到以前记录过第 ...

  8. java异常处理(父子异常的处理)

    我当初学java异常处理的时候,对于父子异常的处理,我记得几句话“子类方法只能抛出父类方法所抛出的异常或者是其子异常,子类构造器必须要抛出父类构造器的异常或者其父异常”.那个时候还不知道子类方法为什么 ...

  9. 关于React的父子组件通信等等

    //==================================================此处为父子组件通信 1.子组件调用父组件: 父组件将子组件需要调用方法存入props属性内,子组 ...

随机推荐

  1. C 总结 | 复习注意点

    1.1 C预处理 常见错误 预处理错误 #include "" 和 <> 使用错误 "No such....." 更改“” 或者<> 或 ...

  2. python——高阶函数:高阶函数

    python高阶函数 00初识高阶函数 一等公民 函数在python中是一等公民(First-Class Object),同样和变量一样,函数也是对象,只不过是可调用的对象,所以函数也可以作为一个普通 ...

  3. 高性能Web动画和渲染原理系列(5)合成层的生成条件和陷阱

    目录 一. 硬件加速相关的几个概念 二. 合成层的生成条件 显式提升 隐式提升 三. 硬件加速的权衡 四. 动画实现的一些建议 示例代码托管在:http://www.github.com/dashno ...

  4. [WPF] Caliburn Micro学习二 Infrastructure

    Caliburn Micro学习一 Installation http://blog.csdn.net/alvachien/article/details/12985415 Step 1. 无论是通过 ...

  5. Python字符串类型判断错误

    Python里面常用的字符串类型有str和unicode,如果要判断一个对象的类型,最好用basestring,否则可能会判断错误: str1 = "hello" str2 = u ...

  6. 如何解决UNMOUNTABLE BOOT VALUME

    Windows error:UNMOUNTABLE BOOT VALUME 解决方法:Windows 修复工具 chkdsk命令 chkdsk D:/f ps:chkdsk 磁盘名 /f

  7. 【dp】Arrange the Schedule

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3538 题意:如题. 题解: 假如 一组数据 ...(n1)A.. ...

  8. HTML学习 day02

    1.HTML的相关概念 网站建设流程 网页组成  网页主要由三部分组成:结构(Structure).表现(Presentation)和行为(Behavior). html(Hypertext Mark ...

  9. C/C++ 条件编译静态库

    ==>windows 下方法: 1.方法一:VS工程中中直接添加 1.1在VS的属性->常规->附加库目录,添上文件夹的路径:例如:lib/x64: 1.2输入的附加依赖项,添加上库 ...

  10. TraceID在AspNETCore日志排障中的应用

    前言 .NetCore日志,相信大家多少都接触过,博客园有关 ① AspNetCore依赖注入第三方日志组件   ②第三方日志组件Nlog,Serilog 应用方法的博文层出不穷. 结合程序的部署结构 ...