• luogu P4981 父子 |数学


    题目背景

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

    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
    ",ksm(n,n-1));
    	}
    	return 0;
    }
    
  • 相关阅读:
    adb 连接小米1S真机调试
    【Docker】容器中找不到vi命令
    【BIEE】导出数据报错
    【SPSS】软件介绍
    【Oracle】查询字段的长度、类型、精度、注释等信息
    【BIRT】使用rptlibrary设置统一数据源
    【Oracle】迁移含有BLOG类型的字段的表
    【Linux】war包的解压与压缩
    【docker】挂载web应用
    【Docker】安装tomcat并部署应用
  • 原文地址:https://www.cnblogs.com/naruto-mzx/p/11726718.html
Copyright © 2020-2023  润新知