博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
dutacm.club Water Problem(矩阵快速幂)
阅读量:6096 次
发布时间:2019-06-20

本文共 1433 字,大约阅读时间需要 4 分钟。

Water Problem

Time Limit:3000/1000 MS (Java/Others)   Memory Limit:163840/131072 KB (Java/Others)
Total Submissions:1228   Accepted:121

[][][]

Description

函数 f:Z+Z

。已知 f(1)f(2) 的值,且对于任意 x>1,有 f(x+1)=f(x)+f(x1)+sin(πx2)

f(n)

的值。

Input

多组数据。(数据组数 T100

每组数据包含 3

个不超过 109 的正整数,分别代表 f(1)f(2) 和 n

的值。

Output

 输出 f(n)mod(109+7)

。每组输出末尾有换行符。

Sample Input

1 2 31 2 5

Sample Output

37 【分析】矩阵快速幂裸题。
#include 
#include
#include
#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f#define met(a,b) memset(a,b,sizeof a)#define pb push_backusing namespace std;typedef long long ll;const long long mod = 1e9+7;const long long N = 4;ll f1,f2;int n;struct Fast_Matrax{ ll a[N][N]; Fast_Matrax() { memset(a,0,sizeof(a)); } void init() { for(int i=0;i
>=1; } return res; }}ans,tmp,x;int main(){ while(~scanf("%lld%lld%d",&f1,&f2,&n)) { x.a[0][0]=f2;x.a[0][1]=f1;x.a[0][2]=1,x.a[0][3]=0; if(n==1)printf("%lld\n",f1); else if(n==2)printf("%lld\n",f2); else { tmp.a[0][0]=1;tmp.a[0][1]=1;tmp.a[0][2]=0;tmp.a[0][3]=0; tmp.a[1][0]=1;tmp.a[1][1]=0;tmp.a[1][2]=0;tmp.a[1][3]=0; tmp.a[2][0]=0;tmp.a[2][1]=0;tmp.a[2][2]=0;tmp.a[2][3]=-1; tmp.a[3][0]=1;tmp.a[3][1]=0;tmp.a[3][2]=1;tmp.a[3][3]=0; ans=x*(tmp^(n-2)); printf("%lld\n",ans.a[0][0]); } } return 0;}

 

 

转载于:https://www.cnblogs.com/jianrenfang/p/6512463.html

你可能感兴趣的文章
使用Eclipse-Maven-git做Java开发(17)--maven项目初步
查看>>
嵌入式开发之C基础学习笔记01--基本原理
查看>>
树形下拉框
查看>>
mysql 5.7 rpm 安装
查看>>
[转] VMware vSphere esxi中的用户权限与角色
查看>>
linux zip解压缩中文乱码
查看>>
MyBatis学习总结(9)——使用MyBatis Generator自动创建代码
查看>>
Distributed Configuration Management Platform(分布式配置管理平台)
查看>>
Java Web学习总结(14)——JSP基础语法
查看>>
PHP常用函数大全
查看>>
历届Jolt图书震撼奖
查看>>
拖延症(下)
查看>>
ORACLE数据泵使用详解
查看>>
我的友情链接
查看>>
ora-01102问题的解决
查看>>
win10系统重置密码
查看>>
Linux中升级git到1.8.3版本方法
查看>>
Hack with python(一)
查看>>
记一次危险的运维mv操作
查看>>
Cell phone privacy guide (Android)
查看>>