Colossal Fibonacci Numbers! 数学

阅读: 评论:0

Colossal Fibonacci Numbers! 数学

Colossal Fibonacci Numbers! 数学

题意:输入两个非负整数 a,b 和正整数 n (0<=a,b<2^64 , 1<=n<=1000) 求斐波拉数f(a^b)%n 的值 其中f(0)=0 f(1)=1  

分析:

斐波拉契数列规律:所有数对n取模,二元组( f(i),f(i+1) ) 有 n*n 种组合 则必有重复 ( f(i),f(i+1) ),导致数列循环

可转化为 =>  a^b 对 循环周期time取模的问题

其中0~2^64  可用unsinged long long 类型存储 

幂取模 需要用快速幂  

即可

#include<bits/stdc++.h>
#define ll unsigned long long  
using namespace std;
pair<int,int> Pair;
vector<int > vt;
int f[10000005];
int main()
{int T;cin>>T;while(T--){ll a,b;int n;cin>>a>>b>>n;if(a==0||n==1) //特判 {printf("0n");continue;}f[0]=0;f[1]=1;f[2]=1;int time;for(int i=3;1 ;i++){f[i]=f[i-1]+f[i-2];f[i]%=n;if(f[i]%n==1&&f[i-1]%n==1){time=i-2;break;}}a%=time;ll ans=1;ll hh=a;int mod=time;while(b){hh%=mod; if(b%2) ans=ans*hh%mod;ans%=mod;hh=hh*hh%mod;			b=b/2;	}int gg=ans;if(gg==0) gg=time;cout<<f[gg]<<endl;}return 0;
}
//10
//1 1 2
//2 3 1000
//18446744073709551615 18446744073709551615 1000
//0 1 1000
//18446744073709551615 0 1
//1 0 1000
//0 18446744073709551615 1000
//7 98 500
//1 500000 1000
//1 1 1

 

本文发布于:2024-01-29 06:23:40,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170648062513329.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数学   Colossal   Fibonacci   Numbers
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23