ICPC2017网络赛(沈阳)number number number
来源:互联网 发布:知几是什么意思 编辑:程序博客网 时间:2024/05/11 23:23
number number number
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 99 Accepted Submission(s): 64
Problem Description
We define a sequence F :
⋅ F0=0,F1=1 ;
⋅ Fn=Fn−1+Fn−2 (n≥2) .
Give you an integerk , 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 integerk , you task is to find the minimal positive mjf−bad number.
The answer may be too large. Please print the answer modulo 998244353.
Give you an integer
Now, give you an integer
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 integerk which is described above. (1≤k≤109 )
Each test case includes an integer
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
Recommend
liuyiding
矩阵快速幂,通过计算发现前几组数据是4,12,33,88等
代码如下:
#include<stdio.h>#include<iostream>#include<algorithm>#include<string.h>using namespace std;typedef long long ll;struct Matrix{ ll matrix[5][5];};int n;//矩阵的阶数const int mod=998244353;void init(Matrix &res){ memset(res.matrix,0,sizeof(res.matrix)); for(int i=0;i<n;i++) res.matrix[i][i]=1;}Matrix multiplicative(Matrix a,Matrix b){ Matrix res; for(int i = 0 ; i < n ; i++){ for(int j = 0 ; j < n ; j++){ res.matrix[i][j]=0; for(int k = 0 ; k < n ; k++){ res.matrix[i][j] = (res.matrix[i][j]%mod+a.matrix[i][k]*b.matrix[k][j]%mod)%mod; } } } return res;}Matrix pow(Matrix mx,ll m){ Matrix res,base=mx; init(res); while(m) { if(m&1) res=multiplicative(res,base); base=multiplicative(base,base); m>>=1; } return res;}int main(){ Matrix mx,nx; ll m,ans; ll k; while(~scanf("%lld",&k)) { n=2; m=2*k+4; mx.matrix[0][0]=mx.matrix[0][1]=mx.matrix[1][0]=1; mx.matrix[1][1]=0; nx=pow(mx,m-1); ans=(nx.matrix[0][0]*0+nx.matrix[0][1]*1)%mod; if(ans==0) printf("%lld\n",mod-1); else printf("%lld\n",ans-1); } return 0;}
阅读全文
0 0
- ICPC2017网络赛(沈阳)number number number
- ICPC2017网络赛(沈阳)1005&HDU6198 number (矩阵+快速幂)
- 【2017沈阳网络赛】1005 hdu6198 number number number 找规律+矩阵快速幂
- hdu5898 odd-even number 沈阳网络赛1007
- HDU 5898 odd-even number 沈阳网络赛
- hdu 5898odd-even number (数位dp 沈阳网络赛)
- HDU 5898 odd-even number (2016亚洲区沈阳站网络赛 )
- hdu 5898 odd even number(acm/icpc沈阳赛区网络赛,数位DP)
- 2017 ICPC 沈阳赛 E。Number
- 2017 icpc 沈阳赛区 1005.number number number(矩阵快速幂)
- Number
- number
- number
- Number
- number
- number
- Number
- Number
- assertRegex的报错
- java
- Oracle数据库sysdba、sysoper权限问题
- 机器学习实战之 k近邻算法 原理及代码实现
- 通过SWIG生成jni代码
- ICPC2017网络赛(沈阳)number number number
- 【BashuOJ2276】月饼盒-矩阵型DP
- Github使用教程(二)------ Github客户端使用方法
- 树莓派(中级篇)--Java环境搭建
- mongodb之lnmp初体验
- RecyclerView的局部刷新
- 如何解决Win10系统下自带IE11无法使用IE10、IE9、IE8等在线考试报名
- bzoj2958序列染色
- c和c++的区别