UVA 10689 Yet another Number Sequence
简单矩阵快速幂。
if(m==1) MOD=10;
if(m==2) MOD=100;
if(m==3) MOD=1000;
if(m==4) MOD=10000;
剩下的就是矩阵快速幂求斐波那契数列第n项取模
- #include<cstdio>
- #include<cstring>
- #include<cmath>
- #include<vector>
- #include<algorithm>
- using namespace std;
- long long MOD;
- long long x, y;
- int n,m;
- long long mod(long long a, long long b)
- {
- if (a >= ) return a%b;
- if (abs(a) % b == ) return ;
- return (a + b*(abs(a) / b + ));
- }
- struct Matrix
- {
- long long A[][];
- int R, C;
- Matrix operator*(Matrix b);
- };
- Matrix X, Y, Z;
- Matrix Matrix::operator*(Matrix b)
- {
- Matrix c;
- memset(c.A, , sizeof(c.A));
- int i, j, k;
- for (i = ; i <= R; i++)
- for (j = ; j <= C; j++)
- for (k = ; k <= C; k++)
- c.A[i][j] = mod((c.A[i][j] + mod(A[i][k] * b.A[k][j], MOD)), MOD);
- c.R=R; c.C=b.C;
- return c;
- }
- void read()
- {
- scanf("%lld%lld%d%d", &x, &y, &n,&m);
- if(m==) MOD=;
- if(m==) MOD=;
- if(m==) MOD=;
- if(m==) MOD=;
- }
- void init()
- {
- // n = n - 1;
- Z.A[][] = x, Z.A[][] = y; Z.R = ; Z.C = ;
- Y.A[][] = , Y.A[][] = , Y.A[][] = , Y.A[][] = ; Y.R = ; Y.C = ;
- X.A[][] = , X.A[][] = , X.A[][] = , X.A[][] = ; X.R = ; X.C = ;
- }
- void work()
- {
- while (n)
- {
- if (n % == ) Y = Y*X;
- n = n >> ;
- X = X*X;
- }
- Z = Z*Y;
- printf("%lld\n", mod(Z.A[][], MOD));
- }
- int main()
- {
- int T;
- scanf("%d",&T);
- while(T--)
- {
- read();
- init();
- work();
- }
- return ;
- }
UVA 10689 Yet another Number Sequence的更多相关文章
- UVA - 10689 Yet another Number Sequence 矩阵快速幂
Yet another Number Sequence Let’s define another number sequence, given by the foll ...
- POJ-3070Fibonacci(矩阵快速幂求Fibonacci数列) uva 10689 Yet another Number Sequence【矩阵快速幂】
典型的两道矩阵快速幂求斐波那契数列 POJ 那是 默认a=0,b=1 UVA 一般情况是 斐波那契f(n)=(n-1)次幂情况下的(ans.m[0][0] * b + ans.m[0][1] * a) ...
- UVA - 10689 Yet another Number Sequence (矩阵快速幂求斐波那契)
题意:已知f(0) = a,f(1) = b,f(n) = f(n − 1) + f(n − 2), n > 1,求f(n)的后m位数. 分析:n最大为109,矩阵快速幂求解,复杂度log2(1 ...
- UVA 10689 Yet another Number Sequence 矩阵快速幂 水呀水
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...
- UVA 10706 Number Sequence (找规律 + 打表 + 查找)
Problem B Number Sequence Input: standard input Output: standard output Time Limit: 1 second A singl ...
- uva 10706 Number Sequence(数学规律)
题目连接:10706 - Number Sequence 题目大意:有一个有0 ~ 9组成的序列,1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 ....就是第一位为1. ...
- HDU 1005 Number Sequence
Number Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- POJ 1019 Number Sequence
找规律,先找属于第几个循环,再找属于第几个数的第几位...... Number Sequence Time Limit: 1000MS Memory Limit: 10000K Total Submi ...
- HDOJ 1711 Number Sequence
Number Sequence Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
随机推荐
- IIS访问PHP文件时,弹出用户名和密码提示框的解决方法
找了一圈,以下的方法解决了IIS访问PHP弹用户名和密码提示框问题. 解决方法:给PHP安装目录everyone读取权限 这样不知道会不会出现安全问题,请大家谨慎.
- eclipse修改豆沙绿
长时间的使用eclipse开发会很累吧 设置一个保护眼睛的豆沙绿色 不刺眼 是不是会更好一些呢 那么如何设置呢现在就教大家 工具/原料 eclipse jdk 方法/步骤 1 首先打开eclip ...
- linux C++通过ntp协议获取网络时间
转自:http://blog.csdn.net/ccjjyy/article/details/42871993 #include <stdio.h> #include <sys/ty ...
- libMobileGestalt与UDID
libMobileGestalt与UDID 没有评论 在iOS中,libMobileGestalt动态库, 用来取得各种系统变量,比如UDID, 磁盘使用量, 设备版本 在iOS7中,对于开发者来说, ...
- 别说你不知道java中的包装类,wrapper type,以及容易在自动拆箱中出现的问题
很多时候,会有人问你,你知道什么是包装类吗? 或者高端一点问你你知道,wrapper type,是什么吗? 然后你就懵逼了,学了java很多时候都不知道这是啥. 其实问你的人,可能只是想问你,java ...
- setAttribute的兼容性
class和className兼容方法: object.setAttribute("class","content") 在IE8.Chrome.火狐.Opera ...
- 一个web项目在myeclipse中add deployment时无法被识别出来的原因
当我们一个web项目,在myeclipse中,add deployment时,可能发现,根本无法被识别成web项目,可能的原因有: 1. 项目的properties ->Myeclipse ...
- html5中拨打电话代码
<a href="tel:18600000000">给我打电话</a> <a href="sms:18600000000"&g ...
- Ubuntu防火墙ufw安装配置
ubuntu 系统默认已安装ufw. 1.安装sudo apt-get install ufw2.启用sudo ufw enablesudo ufw default deny运行以上两条命令后,开启了 ...
- ASP.NET 的内置对象
ASP.NET的内置对象介绍 1.Response 2.Request 3.Server 4.Application 5.Session 6.Cookie Request对象主要是让服务器取得客户端浏 ...