zoukankan      html  css  js  c++  java
  • 9.25DAY1T1

    【问题描述】

      一开始森林里面有N只互不相识的小猴子,它们经常打架,但打架的双方都必须不是好朋友。每次打完架后,打架的双方以及它们的好朋友就会互相认识,成为好朋友。经过N-1次打架之后,整个森林的小猴都会成为好朋友。 现在的问题是,总共有多少种不同的打架过程。 比如当N=3时,就有{1-2,1-3}{1-2,2-3}{1-3,1-2}{1-3,2-3}{2-3,1-2}{2-3,1-3}六种不同的打架过程。

    【输入】

      一个整数N。

    【输出】

      一行,方案数mod 9999991。

    【样例输入】

    4

    【样例输出】

    96

    【数据范围与约定】

    50%的数据N<=10^3。
    100%的数据N<=10^6

    分析:n个点的无根树的个数实际上与prufer序列有关,cayley序列告诉我们n点无根树数量是n^(n-2)个,由于这道题里面要把排列计算进去,所以就要乘以(n-1)!

    最后ans要记得开long  long,这道题还好没有说要写快速幂,就是一个板子题目了

    code:

     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 const int mod=9999991;
     5 int main(){
     6     int n;
     7     cin>>n;
     8     long long ans=1;
     9     for(int i=1;i<=n-2;i++){
    10         ans*=n;
    11         ans%=mod;
    12     }
    13     for(int i=1;i<=n-1;i++){
    14         ans*=i;
    15         ans%=mod;
    16     }
    17     cout<<ans;
    18     return 0; 
    19 }
  • 相关阅读:
    健壮性与可靠性
    invoke与call
    协变性和逆变性
    枚举类型和位标记
    MacOs mysql 安装
    scp -本地文件上传服务器,指定端口
    java中的无穷大和无穷小
    calendar类-时间处理类
    linux 下ln命令--笔记
    hdfs 文件系统命令操作
  • 原文地址:https://www.cnblogs.com/saionjisekai/p/9699550.html
Copyright © 2011-2022 走看看