number number number hdu 6189 矩阵快速幂
来源:互联网 发布:android studio 源码 编辑:程序博客网 时间:2024/06/07 05:17
题目链接
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 byn=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
题意:
给你一个 k, 计算不能用 k 个可以重复的斐波那契数列组成的最小的数.
思路:
打表找规律, 我们发现k = 1 时, 答案为
其实我觉得是可以证明的, 但是鶸表示不会, 我的猜测大概思路应该是因为k = 1 时候, 答案为 4, 然后k = 2 时的答案一定由4 加上某个数组成, 然后要使这个数最小, 所以找一个比 4 大, 而且不为 5 的最小的斐波那契数, 所以 k = 2的答案应该是 4 + 8, 就等于
代码:
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>using namespace std;typedef long long LL;const int mod = 998244353;LL k;struct mat { LL a[3][3]; mat(){memset(a, 0,sizeof(a)); } mat operator *(const mat q){ mat c; for(int i = 1; i <= 2; ++i) for(int j = 1; j <= 2; ++j) if(a[i][j]) for(int k = 1; k<= 2; ++k){ c.a[i][k] += a[i][j] * q.a[j][k]; c.a[i][k] %= mod; }return c; }};mat qpow(mat x, LL n){ mat ans; ans.a[1][1] = ans.a[2][2] = 1; while(n){ if(n&1) ans = ans * x; x = x * x; n >>= 1; }return ans;}LL qpow(LL x,LL n){ LL ans = 1; while(n){ if (n&1) ans = (ans * x) %( mod + 1); x = (x * x) % (mod + 1); n >>= 1; }return ans;}int main(){ mat tmp, ans; tmp.a[1][1] = tmp.a[1][2] = tmp.a[2][1] = 1; while(scanf("%lld", &k) != EOF){ ans = qpow(tmp, 2 * k + 3); printf("%lld\n",(((ans.a[2][1] -1) % mod) + mod) % mod); }return 0;}
阅读全文
0 0
- number number number hdu 6189 矩阵快速幂
- HDU-6189 number number number(矩阵快速幂)
- 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 6198number number number(矩阵快速幂)
- 【HDU 6198】number number number 【规律+矩阵快速幂】
- HDU6198 number number number 矩阵快速幂
- Hdu 1005 Number Sequence//矩阵快速幂
- HDU 1005 Number Sequence(矩阵快速幂)
- HDU-1005- Number Sequence (矩阵快速幂)
- HDU 1005 Number Sequence 矩阵快速幂
- hdu6198 number number number(找规律+矩阵快速幂)
- hdu6198 number number number【找规律+矩阵快速幂】
- hdu6198 number number number(矩阵快速幂模板题)
- HDU 6189 number number number
- MicroStation V8i简体中文版中文字体乱码解决办法
- 使用自定义View直接显示今日头条头布局
- [对象]显示最新输入的新闻信息
- iOS学习笔记-134.RunLoop02——Runloop与线程
- fgthgffgjg吃的风格的风格
- number number number hdu 6189 矩阵快速幂
- 前端之常用库与框架
- 1072: 青蛙爬井
- sprigboot的配置文件
- 掉坑记录--two pointer
- equals与==背后的装箱拆箱机制
- Spark计算相关性系数(皮尔森、斯皮尔曼、卡方检验)
- 搜索引擎开发(1)资料收集
- jQuery动画