zoukankan      html  css  js  c++  java
  • 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;
    }
    
  • 相关阅读:
    自定义Android Toasts风格
    用TAPI实现来电拒接
    压缩与解压缩的实现
    Android之个性化ListView实现
    如何在windows7 Home家庭版中创建Administrator管理员账户
    Android中Intent传递对象的两种方法(Serializable,Parcelable)
    Android模拟器入门
    上海西门子培训第六天(周五)
    上海西门子培训第七天(周六)
    计算机英语学习方法[摘录]
  • 原文地址:https://www.cnblogs.com/naruto-mzx/p/11726718.html
Copyright © 2011-2022 走看看