题目

【题目背景】
LLJ热愛生成树。

【题目描述】
给出一个结点数为N的无向完全图,即任意结点两两相连,且每条边长为1。LLJ想知道这个图的生成树个数。
但这个数量太大了,LLJ会懒得看,所以他只想看这个数量模K后的结果(若K=0,输出-1即可)
注:生成树定义:在图中节点数为N,边数为N-1的连通子图。

【输入】
输入共一行,两个非负整数N K;

【输出】
输出共一行一个整数,即方案数模K后的结果。

【样例输入及输出】

样例编号 样例输入 样例输出
1 1 10
2 4 13
3 100 23

【数据范围限制】

对于30%的数据: 0≤N≤10;
对于60%的数据: 0≤N≤100;
对于90%的数据: 0≤N≤1,000,000;
对于100%的数据:\(0\leq N\leq 10^{18}\);\(0\leq K\leq 1,000,000,007\);


题解

这题就是要找不同的有N个节点的树的个数。
乍一看,毫无头绪,我们不妨画图枚举一下吧!

N的值 树的个数
n=0 0
n=1 1
n=2 1
n=3 3
n=4 16
n=5 125
n=6 1296
…… ……

我们不难发现一个规律:

设\(a_i\)为n=i时的树的个数,那么
\(a_i=i^{i-2}\)

嗯,问题似乎就解决了,不少心急的同学急忙打了一个for循环的暴力代码,交上去,结果就……

请注意题目中的一句话:

对于100%的数据:\(0\leq N\leq 10^{18}\);\(0\leq K\leq 1,000,000,007\);

循环那么多次,不超时才怪!

怎么办?我们就要用一种神奇的东西——快速幂!

◔ ‸◔?快速幂是什么?好吃吗?

顾名思义,快速幂就是快速求\(n^m\)的一种算法。

我们必须知道以下规律:

  1. \(n^m=n^a\times n^b=n^{a+b}\space\space(a+b=m)\)
  2. \(n^m=n^{2^{(\frac{m}{2})}}\space\space(2\mid m)\)

快速幂的思想就是:

  • 先定义一个变量S,初始化为1;
  • 当\(2\mid m\)时,就直接把n乘上n,把m除以2,也就是求 \(n^{2^{(\frac{m}{2})}}\)
  • 当\(2\not \mid m\)时,就把S乘上n,再把m除以2(要整除),就是求 \(n^{1+{2^{[\frac{m}{2}]}}}\),也就是\(n\times n^{2^{[\frac{m}{2}]}}\)
  • 最后输出S(想一想,为什么)

这样的时间复杂度就为\(O(\log_2n)\)(好快啊)
注意要边做边摸。
下面附上代码:

代码

#include<cstdio>
using namespace std;
int main()
{freopen("st.in","r",stdin);freopen("st.out","w",stdout);long long n,k,s=1,t;scanf("%lld%lld\n",&n,&k);if(k==0){puts("-1");return 0;}if(n<2){if(n==0) puts("0");else puts("1");return 0;}t=n-2;n=n%k;while(t>0)//快速幂部分{if(t%2==1) s=(s*n)%k;n=(n*n)%k;t=t/2;}printf("%lld\n",s);return 0;
}

转载于:https://www.cnblogs.com/huangzihaoal/p/11154173.html

【2017宁波联考】生成树相关推荐

  1. 【BZOJ4873】[六省联考2017]寿司餐厅(网络流)

    [BZOJ4873][六省联考2017]寿司餐厅(网络流) 题面 BZOJ 洛谷 题解 很有意思的题目 首先看到答案的计算方法,就很明显的感觉到是一个最大权闭合子图. 然后只需要考虑怎么构图就行了. ...

  2. 六省联考2017 Day1

    目录 2018.3.18 Test T1 BZOJ.4868.[六省联考2017]期末考试 T2 T3 BZOJ.4870.[六省联考2017]组合数问题(DP 矩阵快速幂) 总结 考试代码 T1 T ...

  3. 2017 年一月联考逻辑真题

    2017 年一月联考逻辑真题 真题(2017-26) 26. 倪教授认为,我国工程技术领域可以考虑与国外先进技术合作,但任何涉及核心技术的项目就不能受制于人,我国许多网络安全建设项目涉及信息核心技术. ...

  4. P3749 [六省联考2017]寿司餐厅(最大权闭合子图变形)

    P3749 [六省联考2017]寿司餐厅 最大权闭合子图 有两种建图方式 下面a[i]a_[i]a[​i]表示寿司iii的编号 第二种建图其实就是把di,i也当成一个寿司而已d_{i,i}也当成一个寿 ...

  5. 常德计算机试题,2017湖南高职对口高考常德市大联考计算机专业试卷(4月).doc

    文档介绍: 2017湖南高职对口高考常德市大联考计算机专业试卷(4月).docEvaluationWarning:ThedocumentwascreatedwithSpire..常德市2017年上学期 ...

  6. BZOJ 4872 luogu P3750 [六省联考2017]分手是祝愿

    4872: [Shoi2017]分手是祝愿 Time Limit: 20 Sec  Memory Limit: 512 MB [Submit][Status][Discuss] Description ...

  7. 2017 [六省联考] T5 分手是祝愿

    4872: [Shoi2017]分手是祝愿 Time Limit: 20 Sec  Memory Limit: 512 MB Submit: 458  Solved: 299 [Submit][Sta ...

  8. [BZOJ4873][六省联考2017]寿司餐厅(最大权闭合子图)

    4873: [Shoi2017]寿司餐厅 Time Limit: 20 Sec  Memory Limit: 512 MB Submit: 490  Solved: 350 [Submit][Stat ...

  9. 顺序执行命令需要哪个符号链接_18年MBA联考如何安排答题时间及顺序

    距离18年MBA联考只有76天了,先给大家来一波英语.数学复习攻略,现在复习重在减法,MBA招生一直在强化面试,弱化笔试:所以提前面试已经过了的同学,可以重在复习大纲考点中的高频考点即可 一.管综答题 ...

  10. 2023联考管综论说文阅卷标准及提分计划:附2010-2022年真题

            越是临近黎明,越是黑暗!         距离今年的全国研究生考试只有四十来天,接下来的复习节奏该如何定?对很多考生而言可能已经进入一种混沌状态,不知身在何处.但有一点需要明确,最后的 ...

最新文章

  1. Android 替换TextView 里面指定的符号
  2. 太酷了!Linux的30 个实例详解 TOP 命令!
  3. php与c语言流程控制语句,小蚂蚁学习C语言(7)——C语言流程控制之if
  4. Shell 环境中的预定义变量
  5. ReactNative开发环境
  6. 题目1065:输出梯形
  7. 飞秋教程:文件断点续传
  8. 二维标准正态分布的matlab方程
  9. screen命令详解
  10. python 中文官方手册
  11. java实现pdf转图片
  12. php 单词替换,单词替换 - Shiyin's note
  13. 德威控股在港交所招股书失效:2021年度利润大增,由杨时家族控股
  14. android app 头像上传原理
  15. [BZOJ4430][Nwerc2015]Guessing Camels赌骆驼
  16. 那些年,我们一起做过的 Java 课后练习题(61 - 65)
  17. LaTeX插图命令使用教程(简单例子+清晰代码)(论文排版)
  18. 如何判断Android app退后台、进前台
  19. ODOO13 开发教程一 认识odoo
  20. 用不规则矢量多边形裁切栅格数据的方法比较

热门文章

  1. IAR for ARM介绍、下载、安装与注册
  2. 2020年5月程序员工资统计,平均14542元
  3. latex 双箭头,花体
  4. 唱歌腹式呼吸法的运用技巧
  5. The scripts f2py, f2py3 and f2py3.8 are installed in ‘/home/cyd/.local/bin‘ which is not on PATH
  6. 计算机开机桌面黑,电脑开机后桌面自动变成黑色的
  7. 浅谈现代钢琴踏板的原理以及在三角钢琴和立式钢琴上的差异
  8. 体验云编程——IOS脚本学习门户
  9. 小猫钓鱼游戏java实现
  10. 统计学之假设检验(总体均值、总体比例、总体方差)含例题和解答