【BZOJ3240】【UOJ#124】【NOI2013】矩阵游戏
终于看懂一道题QAQ然而NOI都是这种难度题怎么玩QAQ
原题:
婷婷是个喜欢矩阵的小朋友,有一天她想用电脑生成一个巨大的n行m列的矩阵(你不用担心她如何存储)。她生成的这个矩阵满足一个神奇的性质:若用F[i][j]来表示矩阵中第i行第j列的元素,则F[i][j]满足下面的递推式:
F[1][1]=1
F[i,j]=a*F[i][j-1]+b (j!=1)
F[i,1]=c*F[i-1][m]+d (i!=1)
递推式中a,b,c,d都是给定的常数。
现在婷婷想知道F[n][m]的值是多少,请你帮助她。由于最终结果可能很大,你只需要输出F[n][m]除以1,000,000,007的余数。
1<=N,M<=10^1000 000,a<=a,b,c,d<=10^9
恩显然数论
数论嘛,直接推公式
然后就可以一步算出来f[n][1],然后再一步算出来f[n][m]即可
推推公式或许有奇迹hhh
(然而那个把f[i][1]推到f[i+1][1]的公式转化成C*(1-A^(x-1))/(1-A)+f[1][1]*A^(x-1)的形式似乎真的不好想出来QAQ
实现有许多细节,尤其是处理A是否等于1的时候容易写错
NOI都是这种难度的题怎么玩嘛QAQ
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
#define ll long long
const int mo=(int)1e9+;
int rd(){int z=,mk=; char ch=getchar();
while(ch<''||ch>''){if(ch=='-')mk=-; ch=getchar();}
while(ch>=''&&ch<=''){z=(z<<)+(z<<)+ch-''; ch=getchar();}
return z*mk;
}
char n[],m[];
ll na=,nb=,ma=,mb=,a,b,c,d; ll C,A;
ll qcp(ll x,ll y){
ll z=,bs=x;
while(y){ if(y&) z=(z*bs)%mo; bs=(bs*bs)%mo; y>>=;}
return z;
}
ll x_1(ll x){ return qcp(x,mo-);}
int main(){freopen("ddd.in","r",stdin);
scanf("%s%s",n,m);
int ln=strlen(n),lm=strlen(m);
for(int i=;i<ln;++i) na=(na*+n[i]-'')%mo,nb=(nb*+n[i]-'')%(mo-);
for(int i=;i<lm;++i) ma=(ma*+m[i]-'')%mo,mb=(mb*+m[i]-'')%(mo-);
if(na==) na=mo; if(ma==) ma=mo; if(nb==) nb=mo-; if(mb==) mb=mo-;
cin>>a>>b>>c>>d;
if(a!=) C=(c*b%mo*(qcp(a,(mb-))-)%mo*x_1(a-)%mo+d)%mo,A=c*qcp(a,(mb-))%mo;
else C=(c*b%mo*(ma-)%mo+d)%mo,A=c;
ll tmp;
if(A!=) tmp=(C*(qcp(A,(nb-))-)%mo*x_1(A-)%mo+qcp(A,(nb-)))%mo;
else tmp=(C*(na-)%mo+)%mo;
ll ans;
if(a!=) ans=(b*(qcp(a,(mb-))-)%mo*x_1(a-)%mo+tmp*qcp(a,(mb-))%mo)%mo;
else ans=((ma-)*b%mo+tmp)%mo;
cout<<(ans%mo+mo)%mo<<endl;
//cout<<C<<" "<<A<<" "<<tmp<<endl;
return ;
}
【BZOJ3240】【UOJ#124】【NOI2013】矩阵游戏的更多相关文章
- bzoj 3240: [Noi2013]矩阵游戏 矩阵乘法+十进制快速幂+常数优化
3240: [Noi2013]矩阵游戏 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 613 Solved: 256[Submit][Status] ...
- BZOJ 3240: [Noi2013]矩阵游戏
3240: [Noi2013]矩阵游戏 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1586 Solved: 698[Submit][Status ...
- BZOJ 3240([Noi2013]矩阵游戏-费马小定理【矩阵推论】-%*s-快速读入)
3240: [Noi2013]矩阵游戏 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 123 Solved: 73 [ Submit][ St ...
- (十进制高速幂+矩阵优化)BZOJ 3240 3240: [Noi2013]矩阵游戏
题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=3240 3240: [Noi2013]矩阵游戏 Time Limit: 10 Sec M ...
- P1397 [NOI2013]矩阵游戏(递推)
P1397 [NOI2013]矩阵游戏 一波化式子,$f[1][m]=a^{m-1}+b\sum_{i=0}^{m-2}a^i$,用快速幂+逆元求等比数列可以做到$logm$ 设$v=a^{m-1}, ...
- 【bzoj3240】 Noi2013—矩阵游戏
http://www.lydsy.com/JudgeOnline/problem.php?id=3240 (题目链接) 题意$${F[1][1]=1}$$$${F[i][j]=a*F[i][j-1]+ ...
- BZOJ3240 [Noi2013]矩阵游戏
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...
- BZOJ3240 [Noi2013]矩阵游戏 矩阵 快速幂 卡常
原文链接http://www.cnblogs.com/zhouzhendong/p/8084891.html 题目传送门 - BZOJ3240 题意概括 F[1][1]=1F[i,j]=a*F[i][ ...
- BZOJ3240 NOI2013矩阵游戏(数论)
必修五题. // luogu-judger-enable-o2 #include<iostream> #include<cstdio> #include<cmath> ...
- 题解【bzoj3240 [NOI2013]矩阵游戏】
挖坑2333 等我把代码写完了再写
随机推荐
- bzoj3997
题解: dp f[i][j]=max(f[i-1][j+1]+a[i][j],max(f[i-1][j],f[i][j+1])); 代码: #include<bits/stdc++.h> ...
- bzoj3277
题解: 后缀自动机 然后抄了一发题解 可以看看这个博客:http://blog.csdn.net/clover_hxy/article/details/53861268 代码: #include< ...
- day18 类与类之间的关系
今日所学内容: 1.类与类之间的关系 2.self 到底是谁? 3. 特殊成员 : 1.类与类之间的关系 在我们的世界中事物和事物之前总会有一些联系 在面向对象中,类与类之间也可以产生相关的联系 1) ...
- sqlserver查询父子级关系
自上向下的查询方法,查询出自身以及所有的子孙数据: --自上往下搜索 ;with maco as ( union all select t.* from ty_Dictionary t,maco m ...
- 戴尔poweredge r730服务器配置及系统安装详解教程
第一次给服务器安装的是ubantu系统: 首先我们开机进入小型BIOS设置一下RAID,或者进入服务器管理系统,在系统的BIOS中进行RAID设置: 开机后当看到出现< Ctrl > 时按 ...
- jdk8-全新时间和日期api
1.jdk8日期和时间api是线程安全的 1.java.time 处理日期时间 2.java.time.temporal: 时间校正器.获取每个月第一天,周几等等 3.java.time.forma ...
- ftp上传操作
采用 :FtpWebRequest 进行操作ftp. 1.代码上传文件必须是被动模式 UsePassive=false 2.最好采用二进制传输 UseBinary=true 注意缓冲区大小,还有注意 ...
- HashMap和Hashtable有什么区别?
HashMap和Hashtable都是实现Map接口的,但是: 1.HashMap允许键和值都是null的,而Hashtable不允许键和值为null 2.Hashtable是同步的,而HashMap ...
- 「版本升级」MyEclipse CI 2018.12.0正式发布
新版本MyEclipse为WildFly 14新增一个新的服务器连接器,改进性能并新增一些Java 10修复程序.新版本为IDE做了几个核心修复,这是MyEclipse 2018一个更棒的升级. [M ...
- capjoint一些生成文件的解释
王亮 // :: https://github.com/wangliang1989/oh-my-cap/blob/dev/docs/result.md 这是cap_plt.pl的输入文件.out的各项 ...