Uva 11582 巨大的斐波那契数 模运算
题目链接:https://vjudge.net/contest/156903#problem/A
题意:计算 f(a^b)%n
分析:
1、斐波那契数列是 f(i+2) = f(i+1) + f(i)
2、询问次数是10^4,打表处理;设 f(n,i) 是 f(i) %n 的余数;
3、根据模运算可以知道:f(n,i) = ( f(n,i-1) + f(n,i-2) ) % n;
4、 a^b的处理了,a,b<2^64,数据很大,但是可以发现一个特征,n很小;取值范围很小;可以看其周期性;
5、a^b 对 %n 的周期,的快速幂取模了;
#include <bits/stdc++.h> using namespace std; const int maxn = + ;
typedef unsigned long long ULL; int pow_mod(ULL a,ULL b,int n) {
if(b==) return ;
int k = pow_mod(a,b/,n);
k = k*k%n;
if(b%) k = k*a%n;
return k;
} int f[maxn][maxn*],period[maxn]; int solve(ULL a,ULL b,int n) {
if(a==||n==) return ;
int p = pow_mod(a%period[n],b,period[n]);
return f[n][p];
} int main()
{
//f(n,i) %n 时 i 的余数
for(int n=;n<=;n++) {
f[n][] =; f[n][] = ;
for(int i=;;i++) {
f[n][i] = (f[n][i-]+f[n][i-]) % n;
if(f[n][i-]==&&f[n][i]==)
{
period[n] = i-;
break;
}
}
} ULL a,b;
int n,t;
scanf("%d",&t);
while(t--) {
cin>>a>>b>>n;
cout<<solve(a,b,n)<<endl;
} return ;
}
Uva 11582 巨大的斐波那契数 模运算的更多相关文章
- UVa 11582 巨大的斐波那契数!(幂取模)
https://vjudge.net/problem/UVA-11582 题意: 输入两个非负整数a.b和正整数n,你的任务是计算f(a^b)除以n的余数.f[0]=0,f[1]=1,f[i+2]=f ...
- UVA 11582 Colossal Fibonacci Numbers! 大斐波那契数
大致题意:输入两个非负整数a,b和正整数n.计算f(a^b)%n.其中f[0]=f[1]=1, f[i+2]=f[i+1]+f[i]. 即计算大斐波那契数再取模. 一开始看到大斐波那契数,就想到了矩阵 ...
- 斐波那契数[XDU1049]
Problem 1049 - 斐波那契数 Time Limit: 1000MS Memory Limit: 65536KB Difficulty: Total Submit: 1673 Ac ...
- C++求斐波那契数
题目内容:斐波那契数定义为:f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2)(n>1且n为整数) 如果写出菲氏数列,则应该是: 0 1 1 2 3 5 8 13 21 34 …… ...
- Project Euler 104:Pandigital Fibonacci ends 两端为全数字的斐波那契数
Pandigital Fibonacci ends The Fibonacci sequence is defined by the recurrence relation: F[n] = F[n-1 ...
- DP:斐波纳契数
题目:输出第 n 个斐波纳契数(Fibonacci) 方法一.简单递归 这个就不说了,小n怡情,大n伤身啊……当n=40的时候,就明显感觉到卡了,不是一般的慢. //输出第n个 Fibonacci 数 ...
- HDU4549 M斐波那契数
M斐波那契数列 题目分析: M斐波那契数列F[n]是一种整数数列,它的定义例如以下: F[0] = a F[1] = b F[n] = F[n-1] * F[n-2] ( n > 1 ) 如今给 ...
- HDU3977(斐波那契数列模n的循环节长度)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3977 题意:求斐波那契数列模p的循环节长度,注意p最大是2*10^9,但是它的素因子小于10^6. 分析过 ...
- HDU 5914 Triangle(打表——斐波那契数的应用)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5914 Problem Description Mr. Frog has n sticks, whos ...
随机推荐
- sqlserver 索引进阶(上)
参考原文:http://www.cnblogs.com/tjy9999/p/4494662.html 2. 非聚集索引 SET STATISTICS io ON SET STATISTICS time ...
- 微软原版SQL Helper
代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-- ...
- 在x64平台上调试依赖于x86的WCF服务
根据微软官方的解释,WCF(之前的版本名为“Indigo”)是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架.它使得开发者能够建立一个跨平台的安全.可信赖.事务性 ...
- spring session使用日志
请求进入和退出时,filter触发session的提取和保存 getAttribute时会查询数据库 setAttribute会保存到数据库 daemond线程定时自动删除过期的session s ...
- Quadtrees UVA - 297
题目链接:https://vjudge.net/problem/UVA-297 题目大意:如上图所示,可以用一个四分树来表示一个黑白图像,方法是用根节点表示整副图像,然后把行列各等分两等分,按照图中的 ...
- caffe学习资料
1.利用Caffe做回归(regression) http://www.cnblogs.com/frombeijingwithlove/p/5314042.html
- C++(SOCKET)简单爬虫制作
先给出代码:(我使用的是VS编译器,需要在项目->project属性-> #include <iostream> #include <stdio.h> #inclu ...
- css实现高度垂直居中
1:单行文字垂直居中: 如果一个容器中只有一行文字的话,定义height(高度)和 line-height(行高)相等即可. 如:<div style="height:25px;lin ...
- 自定义Qt组件-通讯模块(P2)
1. 抽象协议AbstractProtocol 抽象协议AbstractProtocol定义CommManager与协议之间的接口.AbstractProtocol中的一些属性(如enabled)用 ...
- linux下常用命令备忘
转自:Linux 命令集锦 linux下查看监听端口对应的进程 # lsof -i:9000 # lsof -Pnl +M -i4 如果退格键变成了:"^h". 终端连接unix删 ...