tjut 2842
来源:互联网 发布:日本软件行业 编辑:程序博客网 时间:2024/06/05 13:07
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> #include <cmath> using namespace std; typedef long long ll; const int maxn = 10; const int mod = 200907; int cnt; struct Matrix { int v[maxn][maxn]; Matrix() {} Matrix(int x) { init(); for (int i = 0; i < maxn; i++) v[i][i] = x; } void init() { memset(v, 0, sizeof(v)); } Matrix operator *(Matrix const &b) const { Matrix c; c.init(); for (int i = 0; i < cnt; i++) for (int j = 0; j < cnt; j++) for (int k = 0; k < cnt; k++) c.v[i][j] = (c.v[i][j] + (ll)v[i][k]*b.v[k][j]) % mod; return c; } Matrix operator ^(int b) { Matrix a = *this, res(1); while (b) { if (b & 1) res = res * a; a = a * a; b >>= 1; } return res; } } a, b, tmp; int main() { int n; while (scanf("%d", &n) != EOF && n != 0) { if (n < 3) { printf("%d\n", n); continue; } a.init(); cnt = 3; a.v[0][0] = a.v[0][2] = a.v[1][0] = a.v[2][2] = 1; a.v[0][1] = 2; tmp = a^(n-2); printf("%d\n", (tmp.v[0][0]*2 + tmp.v[0][1] + tmp.v[0][2]) % mod); } return 0; }
0 0
- tjut 2842
- tjut 5289
- tjut 5288
- tjut 5294
- tjut 2586
- tjut 5296
- tjut 5297
- tjut 5299
- tjut 5384
- tjut 5387
- tjut 5386
- tjut 5381
- tjut 5400
- tjut 5399
- tjut 5396
- tjut 5398
- tjut 5412
- tjut 5410
- [Java]批量生成二维码
- 关于Hive中的复杂数据类型Array,Map,Structs的一些使用案例
- Linux下查找大文件,大目录的方法
- LightOJ 1258 Making Huge Palindromes 【Manacher算法】
- 如何在docker和宿主机之间复制文件
- tjut 2842
- 归并排序
- NYOJ 214 单调递增子序列(二)
- Java编程思想第4版-第七章
- linux下Memcache安装过程
- 锁类型为lgwr
- Linux Signal 处理
- ubutnu 14.04 安装 codeblocks
- Spark面对OOM问题的解决方法及优化总结