HDU
来源:互联网 发布:菜鸟商城android源码 编辑:程序博客网 时间:2024/06/14 08:27
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6198
题目大意:k个非减斐波那契数相加,问不出现在构造的数中最小的数
解题思路:打表找规律,发现求得数为F[2*k+3]-1,而求斐波那契数可以用矩阵快速幂求解
打表代码:
#include<cstdio>#include<algorithm>#include<set>using namespace std;typedef long long LL;const int MAXN = 100000;const int MOD = 998244353;int fib[MAXN],tmp[MAXN],n=40;set<int> ans;void getFib(){ fib[0] = 0, fib[1] = 1; for (int i = 2;i < n;++i) fib[i] = fib[i - 1] + fib[i - 2];}int main(){ getFib(); for (int i = 0;i < n;++i) { ans.insert(fib[i]); printf("%d ", fib[i]); } puts(""); for (int i = 1;i <= 4;++i)//速度比较慢,看到有用dp的,没看懂- = { int tot = 0; for (set<int>::iterator it = ans.begin();it != ans.end();it++) tmp[tot++] = *it; for (int j = 0;j < n;++j) for (int k = 0;k < tot;k++) ans.insert(fib[j] + tmp[k]); int p = 0; for (set<int>::iterator it = ans.begin();it != ans.end();it++) { if (p != *it) { printf("%d\n", p); break; } p++; } } return 0;}
AC代码:
#include<cstdio>#include<iostream>using namespace std;typedef long long LL;const int Max = 10;const int Mod = 998244353;struct Matrix{ int _bulk; LL _matrix[Max][Max]; Matrix(int bulk) :_bulk(bulk) { for (int i = 1;i <= _bulk;++i) for (int j = 1;j <= _bulk;++j) _matrix[i][j] = 0; } Matrix operator*(const Matrix& matrix) { Matrix result(_bulk); for (int i = 1;i <= _bulk;++i) for (int k = 1;k <= _bulk;++k) { if (!_matrix[i][k]) continue; for (int j = 1;j <= _bulk;++j) { result._matrix[i][j] += _matrix[i][k] * matrix._matrix[k][j] % Mod; result._matrix[i][j] %= Mod; } } return result; } void Init() { for (int i = 1;i <= _bulk;++i) _matrix[i][i] = 1; } Matrix quickpow(int n) { Matrix ans(_bulk);ans.Init(); Matrix tmp = (*this); while (n) { if (n & 1) ans = ans*tmp; tmp = tmp*tmp; n >>= 1; } return ans; }};int main(){ for (int k;scanf("%d", &k) == 1;) { Matrix matrix(2); matrix._matrix[1][1] = 1; matrix._matrix[1][2] = 1; matrix._matrix[2][1] = 1; matrix = matrix.quickpow(2 * k + 3 - 1); printf("%I64d\n", (matrix._matrix[1][1] - 1 + Mod) % Mod); } return 0;}
阅读全文
0 0
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu-
- hdu
- hdu
- hdu
- HDU
- 从特征描述符到深度学习:计算机视觉发展20年
- 使用JS完成一个简单的计算器功能
- cookie session 和登录验证
- 《Hadoop + Spark生态系统 操作与实战指南》
- iOS常见加密算法
- HDU
- 检查浏览器版本
- 手机与pc USB连接adb socket通信
- 解决Dynamic Web Module 3.1 requires Java 1.7 or newer
- matlab随机函数rand()使用
- STMS – XT216 – 1 of 1 requests do not match the component version of the target system – XT 216
- Java基础笔记
- 秒杀系统总结
- 关于SSH,FTP突然间登录问题排查全程