Hdu 4291
来源:互联网 发布:网络银行系统架构 编辑:程序博客网 时间:2024/04/30 07:15
题目链接
这道题, 给我的最大的知识点就是对于去模运算,一定可以找到循环节,这题只不过是嵌套了两层,可以分别找到循环节。关于这题如何找循环节的,直接暴力,网上也有很多。
找到循环节之后,另一个知识点就是对于线性关系可以使用矩阵快速幂来加速。
附上代码:
/************************************************************************* > File Name: 4292.cpp > Author: Stomach_ache > Mail: 1179998621@qq.com > Created Time: 2014年04月20日 星期日 22时06分59秒 > Propose: ************************************************************************/#include <iostream>#include <cmath>#include <algorithm>#include <cstring>#include <string>#include <cstdio>#include <fstream>using namespace std;#define MOD1 (1000000007)#define MOD2 (222222224)#define MOD3 (183120)typedef long long LL;struct Matrix {LL a[2][2];//Matrix(int m):n(m){memset(a, 0, sizeof(a));}inline Matrix multiply(Matrix& y, LL mod) {Matrix ret;for (LL i = 0; i < 2; i++) {for (LL j = 0; j < 2; j++) {LL tmp = 0;for (LL k = 0; k < 2; k++) {tmp = (tmp+a[i][k]*y.a[k][j])%mod;//ret.a[i][j] = (ret.a[i][j]+tmp)%mod;}ret.a[i][j] = tmp;}}return ret;}};Matrix power_mod(Matrix x, LL y, LL mod) {Matrix ans;ans.a[0][0] = ans.a[1][1] = 1;ans.a[0][1] = ans.a[1][0] = 0;while (y) {if (y % 2) {ans = ans.multiply(x, mod);}x = x.multiply(x, mod);y /= 2;}return ans;}int main(void) {Matrix A;A.a[0][0] = 0;A.a[1][0] = 1;A.a[0][1] = 1;A.a[1][1] = 3;LL n;while (cin >> n) {if (n == 0 || n == 1) {cout << n << endl;continue;} Matrix tmp1 = power_mod(A, n-1, MOD3); n = tmp1.a[1][1];if (n != 0 && n != 1) {tmp1 = power_mod(A, n-1, MOD2);n = tmp1.a[1][1];}if (n != 0 && n != 1) {tmp1 = power_mod(A, n-1, MOD1);n = tmp1.a[1][1];}cout << n << endl;}return 0;}
0 0
- hdu 4291~
- Hdu 4291
- hdu 4291
- hdu 4291(矩阵幂)
- HDU 4291解题报告
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- 基于linux-2.6.35的class_create(),device_create解析
- C/C++命名规则
- 我的Qt学习笔记 1 从QObject开始
- LinkedIn高级分析师王益:大数据时代的理想主义和现实主义
- jQuery实现图片轮播效果(仿QQ商城首页、天猫首页)
- Hdu 4291
- c++11 Lambda
- 统计局人士:2014-2015年楼市见顶股市见底
- ubuntu 12.04 中eclipse下面提示框背景为黑色的解决方法
- 黑马程序员_总结笔记之IO流(1)_基本流
- linux下如何关闭防火墙?如何查看防火墙当前的状态
- linux VFS 之四:文件对象file
- delphi中ShellExecute使用详解
- Python+Django+SAE系列教程6-----本地配置Django