【HDU 6198】number number number 【规律+矩阵快速幂】
来源:互联网 发布:淘宝客返利订单查询 编辑:程序博客网 时间:2024/06/05 18:58
We define a sequence F:
⋅ F0=0,F1=1;
⋅ Fn=Fn−1+Fn−2 (n≥2).
Give you an integer k, if a positive number n can be expressed by
n=Fa1+Fa2+…+Fak where 0≤a1≤a2≤⋯≤ak, this positive number is mjf−good. Otherwise, this positive number is mjf−bad.
Now, give you an integer k, you task is to find the minimal positive mjf−bad number.
The answer may be too large. Please print the answer modulo 998244353.
Input
There are about 500 test cases, end up with EOF.
Each test case includes an integer k which is described above. (1≤k≤109)
Output
For each case, output the minimal mjf−bad number mod 998244353.
Sample Input
1
Sample Output
4
Source
2017 ACM/ICPC Asia Regional Shenyang Online
代码
#include<bits/stdc++.h>using namespace std ;typedef long long LL ;const int MAXN = 100000+10;const int MAXM = 1e5 ;const LL mod = 998244353;const int inf = 0x3f3f3f3f; struct Matirx { int h,w; LL a[5][5];}ori,res,it;LL f[5]={0,1,1};void init(){ it.w=2;it.h=1;it.a[1][1]=1;it.a[1][2]=0; res.w=res.h=2; memset(res.a,0,sizeof(res.a)); res.a[1][1]=res.a[2][2]=1; ori.w=ori.h=2; memset(ori.a,0,sizeof(ori.a)); ori.a[1][1]= 1;ori.a[1][2]= 1; ori.a[2][1]= 1;ori.a[2][2]= 0; }Matirx multy(Matirx x,Matirx y){ Matirx z;z.w=y.w;z.h=x.h; memset(z.a,0,sizeof(z.a)); for(int i=1;i<=x.h;i++){ for(int k=1;k<=x.w;k++){ if(x.a[i][k]==0) continue; for(int j=1;j<=y.w;j++) z.a[i][j]=(z.a[i][j]+x.a[i][k]*y.a[k][j]%mod)%mod; } } return z;}LL Matirx_mod(LL n){ if(n<2) return f[n]; else n-=1; while(n){ if(n&1) res=multy(ori,res); ori=multy(ori,ori); n>>=1; } res=multy(it,res); return res.a[1][1]%mod;}int main(){ LL k; while(~scanf("%lld",&k)){ init(); printf("%lld\n",(Matirx_mod(2*k+3)%mod-1+mod)%mod); } return 0;}
阅读全文
0 0
- HDU-6198 number number number(打表找规律、矩阵快速幂)
- HDU 6198 number number number【找规律+矩阵快速幂】
- HDU 6198 number number number(规律+矩阵快速幂)
- 【HDU 6198】number number number 【规律+矩阵快速幂】
- 【打表找规律+矩阵快速幂】number number number HDU
- Hdu 6198 number number number【矩阵快速幂】
- HDU 6198number number number(矩阵快速幂)
- hdu6198 number number number(找规律+矩阵快速幂)
- hdu6198 number number number【找规律+矩阵快速幂】
- number number number hdu 6189 矩阵快速幂
- HDU-6189 number number number(矩阵快速幂)
- HDU6198 number number number 矩阵快速幂
- 【2017沈阳网络赛】1005 hdu6198 number number number 找规律+矩阵快速幂
- Hdu 1005 Number Sequence//矩阵快速幂
- HDU 1005 Number Sequence(矩阵快速幂)
- HDU-1005- Number Sequence (矩阵快速幂)
- HDU 1005 Number Sequence 矩阵快速幂
- hdu6198 number number number(矩阵快速幂模板题)
- 设计模式,Let's “Go”! (下)
- 自己写得一个Unity 3d日志打印工具类
- 关于二进制
- SpannableString与SpannableStringBuilder
- adb.exe,start-server' failed -- run manually if necessary
- 【HDU 6198】number number number 【规律+矩阵快速幂】
- CUDA安装后路径不全导致TensorFlow MNIST例子运行中PyThon发生异常
- linux常用命令3
- S3C2440之UART
- TCP三次握手四次挥手——下篇
- 【python 爬虫】百度贴吧帖子所有楼层图片爬虫
- 浙江大华2015面试题
- viewpager切换动画
- 使用 SysRq 查看系统信息