Colossal Fibonacci Numbers! UVA 11582 寻找循环节
/**
题目:Colossal Fibonacci Numbers! UVA 11582
链接:https://vjudge.net/problem/UVA-11582
题意:f[0] = 1, f[1] = 1; 给定一个n,求f[a^b]%n的结果。a,b达到2^64 - 1大。
思路:a,b很大,用无符号长整型;我还是太菜了,自己没想出来。这道题很显然是找循环节的题。但我不知怎么找。
lrj P316
思路就是,由于fibonacci数是由前两个数相加得来,又%n;所以所有fibonacci取余后,结果都在1000以内。
两个连续的数最多只有1000×1000种。所以循环节就会出现。
我一开始以为可能是混循环或者纯循环两种情况。然后搞得很麻烦。
实际上只有一种情况:纯循环;
证明:假设存在混循环,f[0] f[1] f[2] ... f[i] f[i+1] ... f[j] f[j+1]...
f[i]==f[j], f[i+1]==f[j+1]; 由于f[i+1] = f[i]+f[i-1] , f[j+1] = f[j]+f[j-1] 所以显然f[i-1]==f[j-1]; 那么f[i-1] f[i] f[j-1] f[j]又是一个循环节。同理一直推到f[0] f[1]开始的循环。 所以都是纯循环。 */
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <set>
#include <vector>
#include <cmath>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int inf = 0x3f3f3f3f;
const int maxn = 1e3+;
const double eps = 1e-;
int f[maxn*maxn];
ull a, b;
int n;
ll PowMod(int mod)
{
ll p = ;
a %= mod;
ll x = a;
while(b>){
if(b&) p = p*x%mod;
x = x*x%mod;
b >>= ;
}
return p;
}
void solve()
{
f[] = ;
f[] = ;//n = 1 的时候 这里为0
int ed;
for(int i = ; i <= n*n; i++){
f[i] = f[i-]+f[i-];
f[i] %= n;
if(f[i-]==f[]&&f[i]==f[]){
ed = i-; ///[st, ed]
break;
}
}
ll pos = PowMod(ed);
printf("%d\n",f[pos]);
}
int main()
{
int T;
cin>>T;
while(T--){
scanf("%llu%llu%d",&a,&b,&n);
if(a==||n==){///处理0^ei的情况,以及对1取模值肯定为0;
printf("0\n"); continue;
}
solve();
}
return ;
}
Colossal Fibonacci Numbers! UVA 11582 寻找循环节的更多相关文章
- Colossal Fibonacci Numbers! UVA - 11582(快速幂,求解)
Problem Description The i’th Fibonacci number f(i) is recursively defined in the following way: •f(0 ...
- UVA 11582 Colossal Fibonacci Numbers(数学)
Colossal Fibonacci Numbers 想先说下最近的状态吧,已经考完试了,这个暑假也应该是最后刷题的暑假了,打完今年acm就应该会退了,但是还什么都不会呢? +_+ 所以这个暑假,一定 ...
- UVa 11582 Colossal Fibonacci Numbers! 紫书
思路是按紫书上说的来. 参考了:https://blog.csdn.net/qwsin/article/details/51834161 的代码: #include <cstdio> # ...
- UVa-11582:Colossal Fibonacci Numbers!(模算术)
这是个开心的题目,因为既可以自己翻译,代码又好写ヾ(๑╹◡╹)ノ" The i’th Fibonacci number f(i) is recursively defined in the f ...
- Colossal Fibonacci Numbers(巨大的斐波那契数)UVA 11582
评测地址:http://acm.hust.edu.cn/vjudge/problem/41990 The i'th Fibonacci number f (i) is recursively de n ...
- UVa 11582 Colossal Fibonacci Numbers! 【大数幂取模】
题目链接:Uva 11582 [vjudge] watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fil ...
- hdu1005 Number Sequence(寻找循环节)
主题链接: pid=1005">huangjing 题意: 就是给了一个公式,然后求出第n项是多少... 思路: 题目中n的范围实在是太大,所以肯定直接递推肯定会超时,所以想到的是暴力 ...
- Uva11582 Colossal Fibonacci Numbers!(同余模定理+快速幂)
https://vjudge.net/problem/UVA-11582 首先明确,斐波那契数列在模c的前提下是有循环节的.而f[i] = f[i-1]+f[i-2](i>=2)所以只要有两个连 ...
- F(N)---hdu2802(寻找循环节)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2802 f[1] = 1; f[2] = 7; f[n] = (f[n-2] - (n-1)*(n-1) ...
随机推荐
- Jackson错误:Can not deserialize instance of java.lang.String out of START_OBJECT token
org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Can not des ...
- zk删除node模式
检查状态 状态描述指定的znode的元数据.它包含时间戳,版本号,ACL,数据长度和子znode等细项. 语法 stat /path 示例 stat /FirstZnode 输出 [zk: local ...
- npm install -S -D -g 有什么区别
npm install module_name -S 即 npm install module_name --save 写入dependencies npm install modu ...
- unity render pipeline
post process v2 GUI temp8->TaregtPool0->temp8 tem8 temp8->backbu ...
- Yii2系列教程七:Behaviors And Validations
这一篇文章的开头就无需多言了,紧接着上一篇的内容和计划,这一篇我们来说说Yii2的Behavior和Validations. Behavior 首先我们来说说Behavior,在Yii2中Behavi ...
- Session机制详细介绍
Session机制详细介绍
- java 发送html邮件,苹果或者某些邮件客户端收到的内容为空白解决方案
需要把网页标签中的双引号替换为 " 或者 \\\" 例如 <div id=\\\"container\\\" style=\\\"widt ...
- 【Python】八大排序算法的比较
排序是数据处理比较核心的操作,八大排序算法分别是:直接插入排序.希尔排序.简单选择排序.堆排序.冒泡排序.快速排序.归并排序.基数排序 以下是排序图解: 直接插入排序 思想 直接插入排序是一种最简单的 ...
- SQL优化- 数据库SQL优化——使用EXIST代替IN
数据库SQL优化——使用EXIST代替IN 1,查询进行优化,应尽量避免全表扫描 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引 . 尝试下面的 ...
- Jmeter-性能测试(三)
一.调通脚本(以json串Post接口为例)添加聚合报告(线程组->添加->监听器->聚合报告)并调试好需要压测的脚本,如下已经调通的P_C_B151就是我需要压测的脚本 二.设置场 ...