hihocoder#1605 : 小Hi的生成树计数(矩阵快速幂)
来源:互联网 发布:Json 大括号 编辑:程序博客网 时间:2024/06/06 18:33
时间限制:10000ms
单点时限:1000ms
内存限制:256MB
- 样例输入
2
- 样例输出
3
描述
小Hi最近对生成树(包含所有顶点的联通无环子图。)非常的感兴趣,他想知道对于特定的简单平面无向图是不是存在求生成树个数的简单方法。
小Hi定义了这样的图:一个以{0,1,2……n}为顶点的图,顶点0与其他n个顶点直接相连,对于顶点i(1 ≤ i < n),顶点i与顶点i+1连有一条边。下面是小Hi画的图n=4的图:
请求出对于任意n,这样的图的生成树个数。
输入
多组数据,每组数据一行,包括一个整数n
30%的数据(1 ≤ n ≤ 100),组数不超过10组
70%的数据(1 ≤ n ≤ 1000000),组数不超过10组
100%的数据(1 ≤ n ≤ 1000000000),组数不超过10组
输出
每组数据输出一个行包括一个整数,代表了图的生成树个数(对1000000007取模)。
#include<bits/stdc++.h>using namespace std;const int MOD=1000000007;struct lenka{ long long a[2][2];};lenka cla(const lenka& a,const lenka& b){ lenka c; memset(c.a,0,sizeof c.a); for(int i=0;i<2;i++) { for(int j=0;j<2;j++) { for(int k=0;k<2;k++) { c.a[i][j]+=(a.a[i][k]*b.a[k][j])%MOD; c.a[i][j]=(c.a[i][j]%MOD+MOD)%MOD; } } } return c;}long long POW(long long n){ lenka res,a; memset(a.a,0,sizeof a.a); memset(res.a,0,sizeof res.a); a.a[0][0]=3,a.a[0][1]=1; a.a[1][0]=-1; res.a[0][0]=res.a[1][1]=1; while(n) { if(n&1)res=cla(res,a); a=cla(a,a); n/=2; } return ((3ll*res.a[0][0]%MOD+res.a[1][0]%MOD)%MOD+MOD)%MOD;}int main(){ long long n; while(scanf("%lld",&n)!=EOF) { if(n==1)cout<<1<<endl; else cout<<POW(n-2)<<endl; } return 0;}
阅读全文
1 0
- hihocoder#1605 : 小Hi的生成树计数(矩阵快速幂)
- hihocoder#1345 : 小h的朋友们(矩阵快速幂)
- Hihocoder-小Hi的烦恼
- hihoCoder 1513: 小Hi的烦恼(五维偏序+bitset)
- HihoCoder #1513 : 小Hi的烦恼
- Hihocoder-1545 小Hi和小Ho的对弈游戏(博弈)
- hihoCoder 1143 矩阵快速幂
- 生成树的计数 Matrix-Tree(矩阵树)定理
- 生成树的计数与基尔霍夫矩阵
- hdu 5498 Tree 动态规划+快速矩阵幂+生成树计数+高斯消元
- Hihocoder 147周 小HI的烦恼 bitset(技巧)
- hihoCoder 1513 : 小Hi的烦恼 位运算好题
- hihocoder 1555 四次方根(矩阵快速幂)
- hihocoder1143矩阵快速幂 & hihocoder 1051 & hihocoder 1049 & hihocoder1066
- HihoCoder 1151 矩阵快速幂 + 取模
- hihocoder 1504 : 骑士游历 矩阵快速幂
- hihocoder#1570 : 小Hi与法阵
- Lightning----HDU_4305----生成树的计数----矩阵树定理
- Android_网络请求数据之HttpClient方式(核心代码)
- Python机器学习代码中的命名
- 10.7 剪草 2394
- 58. Length of Last Word(第五周)
- NKOJ 2644 (SCOI 2010) 传送带(三分)
- hihocoder#1605 : 小Hi的生成树计数(矩阵快速幂)
- spring in action 学习笔记(六)通过setter注入bean属性
- 文章标题
- Gym 101490K dp
- Levenberg-Marquardt算法浅谈
- 删除数字
- ExceptionUtil
- Android弹幕实现:基于B站弹幕开源系统(7)QQ、微信聊天气泡样式的弹幕
- HttpClient和HttpURLConnection网络请求数据