[luogu] zpl的数学题1
2024-08-27 07:43:26
https://www.luogu.org/problemnew/show/U16887
$f[1] + f[2] + f[3] + .... + f[n] = f[n + 2] - 1$
矩阵快速幂求出第n+2项即可
#include <bits/stdc++.h> using namespace std; #define gc getchar()
#define LL long long const LL mod = ; LL n, s; inline LL read(){
LL x = ; char c = gc;
while(c < '' || c > '') c = gc;
while(c >= '' && c <= '') x = x * + c - '', c = gc;
return x;
} struct Node{
LL m[][];
Node() { memset(m,,sizeof m);}
void clear(){for(int i = ; i <= n; i ++) m[i][i] = ;}
}; Node operator *(Node a, Node b){
Node ret;
for(int i = ; i <= n; i ++)
for(int j = ; j <= n; j ++)
for(int k = ; k <= n; k ++)
ret.m[i][j] = (ret.m[i][j] + a.m[i][k] * b.m[k][j]) % mod;
return ret;
} Node ksm(Node a, LL p){
Node ret; ret.clear();
while(p){
if(p & ) ret = ret * a;
a = a * a;
p >>= ;
}
return ret;
} int main()
{
s = read();
s += ;
n = ;
Node a, b;
a.m[][] = ; a.m[][] = ; a.m[][] = ; a.m[][] = ;
b.m[][] = ; b.m[][] = ;
Node Ans;
Ans = ksm(a, s - );
Node answer = Ans * b;
cout << answer.m[][] - ; return ;
}
最新文章
- EF Code First 一对多、多对多关联,如何加载子集合?
- 关于问题ld:library not found for -lXXX的错误
- Httpoxy远程代理感染漏洞 [转]
- 远程连接RabbitMQ失败
- C# 正则匹配domain
- jquery validate ajax submit form
- 一个LINUX狂人的语录(个人认为很精辟)
- R语言简单入门
- 文件上传~Uploadify上传控件
- android 后台附件下载
- CHAR 详解
- Access to the temp directory is denied. Identity &#39;NT AUTHORITY\NETWORK SERVICE&#39; under which XmlSerializer is running does not have sufficient permiss
- 还原NuGet程序包
- 芯灵思Sinlinx A64开发板Linux内核定时器编程
- Win10系列:VC++ Direct3D图形绘制1
- C# Owin初探 概念理解(一)
- linux命令(44):sed,vim;去掉文件中的^M 符号,去掉行首空格和制表符
- 6 ways to import data into SQL Server
- Android UI测量、布局、绘制过程探究
- 【IOI 2018】Werewolf 狼人
热门文章
- stdmap 用 at() 取值,如果 key 不存在,不好意思,程序崩溃。QMap 用 value()取值,如果 key 不存在,不会崩溃,你还可以指定默认值
- 用chattr命令防止系统中某个关键文件被修改
- Spring Cloud Alibaba学习笔记(7) - Sentinel规则持久化及生产环境使用
- Python windows环境 搭建问题
- C#ModBus Tcp 报文解析
- javascript -- 把按钮变成读秒倒计时
- H5 - flexbox 弹性盒布局和布局原理
- Django中使用geetest验证
- 剖析gcc -v输出
- 用js刷剑指offer(字符串的排列)