UVA-11582 数学

Posted LuZhiyuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVA-11582 数学相关的知识,希望对你有一定的参考价值。

UVA-11582

题意:

求f[a^b]%n ,其中f是斐波那契数列,1<=n<=1000,0<=a,b<=2^64;

代码:

//这题重点是要发现 f[i]%n会出现循环,然后找出他的循环节m取 a^b%m 即可 
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
typedef  unsigned long long ull;
ull f[1000009];
int re[1009],t;
int pow_mod(ull a,ull b,ull mod){
    if(b==0) return 1;
    ull tmp=pow_mod(a,b/2,mod);
    tmp=tmp*tmp%mod;
    if(b&1) tmp=a*tmp%mod;
    return tmp;
}
int main()
{
    for(int i=2;i<=1000;i++){
        ull pre=1,pree=0,now,mod=i;
        for(int j=2;j<=1000000;j++){
            now=(pre+pree)%mod;
            if(now==1&&pre==0){
                re[i]=j-1;
                break;
            }
            pree=pre;pre=now;
        }
    }
    f[0]=0;f[1]=1;
    ull a,b;
    int n;
    scanf("%d",&t);
    while(t--){
        scanf("%llu%llu%d",&a,&b,&n);
        if(n==1||a==0){
            printf("0\n");
            continue;
        }
        int p=pow_mod(a%re[n],b,re[n]);
        //cout<<p<<endl;
        for(int i=2;i<=p;i++)
            f[i]=(f[i-1]+f[i-2])%n;
        printf("%llu\n",f[p]);
    }
    return 0;
}

 

以上是关于UVA-11582 数学的主要内容,如果未能解决你的问题,请参考以下文章

UVA 11582

uva 11582 Colossal Fibonacci Numbers!

快速幂 UVa11582 巨大的斐波那契数!

UVA 11582 - Colossal Fibonacci Numbers!(数论)(分治法幂取模)

UVa 11582 - Colossal Fibonacci Numbers!(数论)

UVA - 11582 Colossal Fibonacci Numbers!循环节