zoukankan      html  css  js  c++  java
  • uva 11582 Colossal Fibonacci Numbers!

    题意:让你求费伯纳西数列的第a的b次方项模n的结果。

    由于是每一项都对n取模,所以不同的n值都会对应一个周期,只要循环一下。当前项等于f1,前一项等于f0时就可以跳出循环了。
    a的b次方,可以用幂取模的知识,快速分治求出。
    注意第二个样例a要先模一下周期,不然会有溢出。
    刚开是long long 也会溢出,所以要用unsigned long long。

    #include<stdio.h>
    #include<iostream>
    using namespace std;
    typedef unsigned long long ull;
    const int N=1000+24;
    int f[N][N*6],g[N];
    
    int pow_mod(ull a, ull b, int m)
    {
        if(b==0) return 1;
        int k=pow_mod(a, b/2, m);
        k=k*k%m;
        if(b%2) k=k*a%m;
        return k;
    }
    int main()
    {
        ull a,b;
        int t,i,n,j;
        for(i=2;i<N;i++)
        {
            f[i][0] = 0;
            f[i][1] = 1;
            for(j=2; ; j++)
            {
                f[i][j]= (f[i][j-1] + f[i][j-2]) % i;
                if(f[i][j-1] == 0 && f[i][j] == 1)
                {
                    g[i]=j-1;
                    break;
                }
            }
        }
        cin>>t;
        while(t--)
        {
            cin>>a>>b>>n;
            if(a == 0 || n == 1)
            {
                cout<<0<<endl;
            }
            else
            {
                int p=pow_mod(a % g[n], b, g[n]);
                //cout<<p<<endl;
                cout<<f[n][p]<<endl;
            }
        }
        return 0;
    }

    版权声明:本文为博主原创文章,未经博主允许不得转载。http://xiang578.top/

  • 相关阅读:
    NFS 规格严格
    Spring 规格严格
    如何做好软件功能测试 规格严格
    51CTO上不错的文章 规格严格
    一个好网站 规格严格
    系统小贴士 规格严格
    编译Zabbix 规格严格
    JS学习 规格严格
    杂项 规格严格
    MySQL 自增ID 规格严格
  • 原文地址:https://www.cnblogs.com/xryz/p/4847975.html
Copyright © 2011-2022 走看看