3的幂的和

思路;

  矩阵快速幂;

    sn-1      3 1        sn

      *          =

  1      0 1     1

来,上代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; #define mod 1000000007 struct NodeType {
long long a[][];
};
struct NodeType ans; long long n; struct NodeType mul(NodeType pos)
{
NodeType res;
res.a[][]=,res.a[][]=;
res.a[][]=,res.a[][]=;
for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
{
for(int v=;v<=;v++)
{
res.a[i][j]=(res.a[i][j]+(pos.a[i][v]*pos.a[v][j])%mod)%mod;
}
}
}
return res;
} void poww(int mi)
{
NodeType pos;
pos.a[][]=,pos.a[][]=;
pos.a[][]=,pos.a[][]=;
while(mi>)
{
struct NodeType res;
res.a[][]=,res.a[][]=;
res.a[][]=,res.a[][]=;
if(mi&)
{
for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
{
for(int v=;v<=;v++)
{
res.a[i][j]=(res.a[i][j]+(ans.a[i][v]*pos.a[v][j])%mod)%mod;
}
}
}
ans=res;
}
pos=mul(pos),mi=mi>>;
}
} int main()
{
scanf("%lld",&n);n--;
ans.a[][]=,ans.a[][]=;
ans.a[][]=,ans.a[][]=;
poww(n);
cout<<(ans.a[][]+ans.a[][])%mod;
return ;
}

最新文章

  1. Java基础——继承、接口
  2. CSS的5种常用的垂直居中的方法
  3. iOS逆向工程资料
  4. 自己签发免费ssl证书
  5. 获取、增加、修改、删除sqlserver字段描述
  6. ARM处理器的寄存器,ARM与Thumb状态,7中运行模式 【转】
  7. Android studio gradle 打包 那些事
  8. CodeForces 709A Juicer (水题, 模拟)
  9. javascript笔记——label包含的自定义按钮选中
  10. django form关于clean及cleaned_data的说明 以及4种初始化
  11. underscore demo
  12. java获取对象属性类型、属性名称、属性值 【转】
  13. Git之路——Git的使用
  14. UML作业第二次:类在类图中的表示
  15. 服务器安装SSH服务:
  16. 配置VLAN
  17. 【原创】驱动枚举之EnumServicesStatusEx
  18. CentOS 7 输入中文 &amp; 安装搜狗输入法
  19. asp.net core下的如何给网站做安全设置
  20. rds下载备份集

热门文章

  1. python函数调用顺序、高阶函数、嵌套函数、闭包详解
  2. HDU 5971 二分图判定
  3. 动态规划:HDU1789-Doing Homework again
  4. 1568: [JSOI2008]Blue Mary开公司(超哥线段树)
  5. B树、B-树、B+树、B*树之间的关系
  6. SPFA - Luogu 3385 【模板】负环
  7. MFC定时关机程序的实现3-最小化到托盘栏
  8. SpringBoot中Async异步方法和定时任务介绍
  9. python 列表、元组 详解
  10. shell之常用命令