1. 程式人生 > >2018年東北農業大學春季校賽 K-why的數列(斐波那契數列迴圈節)

2018年東北農業大學春季校賽 K-why的數列(斐波那契數列迴圈節)

連結:https://www.nowcoder.com/acm/contest/93/K
來源:牛客網

題目描述

wyh學長特別喜歡斐波那契數列,F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n>=2)

一天他突發奇想,想求F(a^b)%c

輸入描述:

輸入第一行一個整數T(1<=T<=100),代表測試組數
接下來T行,每行三個數 a,b,c (a,b<=2^64) (1<c<1000)

輸出描述:

輸出第a^b項斐波那契數對c取餘的結果
題解:
找斐波那契數列取模c的迴圈節,然後可以對項數a^b%(迴圈節長度)
這樣就可以通過快速冪求出a^b取模一個數的值,
取模後的數較小,可以通過迴圈取模求得。
程式碼:

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<map>
#include<set>
#include<queue>
using namespace std;
#define ll unsigned long long int
const int maxn = 1e7 + 10;
ll a, b, c;
ll f[155005];
ll qkm(ll a, ll b,ll mod) 
{
    ll ans = 1;
    while (b > 0) 
        {
        if (b % 2) (ans = ans * a) %= mod;
        (a = a * a) %= mod;
        b >>= 1;
    }
    return ans;
}
int main()
{
    int T;
    scanf("%d", &T);
    while (T--) 
    {
        scanf("%lu %lu %lu", &a, &b, &c);
        f[0] = 0;
        f[1] = 1%c;
        for (int i = 2; i <= 150001; i++) 
        {
            (f[i] = f[i - 1] + f[i - 2])%=c;
        }
        for(ll i=2;i<=150000;i++)
        {
            if(f[i]==f[1]&&f[i-1]==f[0])
            {
                printf("%lu\n", f[qkm(a%(i-1),b,i-1)]%c);
                break;
            }
        }
    }
    return 0;
}

相關推薦

2018東北農業大學春季 K-why數列(數列迴圈)

連結:https://www.nowcoder.com/acm/contest/93/K來源:牛客網題目描述 wyh學長特別喜歡斐波那契數列,F(0)=0,F(1)=1,F(n)=F(n-1)+F(n

2018東北農業大學春季 K wyh的數列

連結:點選開啟連結題目描述 wyh學長特別喜歡斐波那契數列,F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n>=2) 一天他突發奇想,想求F(a^b)%c 輸入描述:輸入第一行一個整數T(1<=T<=100),代表測試組數 接下來

2018東北農業大學春季 K、wyh的數列

題意:  斐波拉契數列f[0]=0、f[1]=1 , f[n]=f[n-1]+f[n-2](n>=2);求f[a^b]%c.(a、b<=2^64、2<=c<=1000)***因為

2018東北農業大學春季 H why的吃雞

連結:點選開啟連結題目描述 最近吃雞遊戲非常火,你們wyh學長也在玩這款遊戲,這款遊戲有一個非常重要的過程,就是要跑到安全區內,否則就會中毒持續消耗血量,我們這個問題簡化如下 假設地圖為n*n的一個圖,圖中有且僅有一塊X的聯通快代表安全區域,有一個起點S代表縮圈的時

2018東北農業大學春季 題解

【題目連結】 寫在前面:從都到尾做了一下這場比賽,似乎好題都是原題,水題都是他們學校自己出的。原題在抄過來的過程中,很多題目的題面、資料範圍都出了問題,還有題目資料很水。建議以後這樣的比賽不要掛到外面來了,不然別人會罵你們學校不負責任的... ... 吐槽: 1. 牛客網題面上輸入順序寫

2018東北農業大學春季 B wyh的矩陣【規律】

題目連結 思路 先加入 中間的那行 和中間的那列 再減去 最中間那個數 因為它 加了兩次 然後逐行往下加 會發現是一個三角形 然後下面是一個對稱的三角形 注意一下 不要反覆加 就可以了

動態規劃--dp--2018東北農業大學春季J

來源:牛客網 我國現在能源消耗非常嚴重,現在政府有這樣一個工作,每天早上都需要把一些路燈關掉,但是他們想讓在關閉的過程中所消耗的能源是最少的,負責路燈關閉的工作人員以1m/s的速度進行行走,假設關閉路燈的時候不需要花費任何的時間,請你編寫一個程式,計算在給定路燈位置和每個

2018東北農業大學春季

【題目】 A wyh的曲線 10/51 未通過 學一下求曲線長度? B wyh的矩陣 461/1355 通過 規律題方便打表的先打表再推 C wyh的商機 12/31 未通過 離線LCA? D wyh的迷宮

2018東北農業大學春季 B題題解

#include<iostream> #include<algorithm> using namespace std; int main() { long long t,n;cin>>t; long long sum=0;

2018東北農業大學春季H題wyh的吃雞

題目描述 最近吃雞遊戲非常火,你們wyh學長也在玩這款遊戲,這款遊戲有一個非常重要的過程,就是要跑到安全區內,否則就會中毒持續消耗血量,我們這個問題簡化如下假設地圖為n*n的一個圖,圖中有且僅有一塊X的聯通快代表安全區域,有一個起點S代表縮圈的時候的起點,圖中C代表的是車(保

2018東北農業大學春季:L-wyh的天鵝(Treap)

題意:插入元素,刪除元素,查詢第K大。題解:Treap。#include <bits/stdc++.h> using namespace std; #define Lc (o -> Ch[0]) #define Rc (o -> Ch[1]) #de

2018東北農業大學春季 B

連結:https://www.nowcoder.com/acm/contest/93/B來源:牛客網時間限制:C/C++ 1秒,其他語言2秒空間限制:C/C++ 262144K,其他語言524288K 64bit IO Format: %lld題目描述 給你一個n*n矩陣,

2018東北農業大學春季D wyh的迷宮

給你一個n*m的迷宮,這個迷宮中有以下幾個標識: s代表起點 t代表終點 x代表障礙物 .代表空地 現在你們涵哥想知道能不能從起點走到終點不碰到障礙物(只能上下左右進行移動,並且不能移動到已經移動過的點)。 輸入描述:輸入第一行一個整數T(1<=T<=1

2018東北農業大學春季 B wyh的矩陣 【規律】

連結:https://www.nowcoder.com/acm/contest/93/B #include<bits/stdc++.h> using namespace std; #define ll long long int main() { int

2018東北農業大學春季 L-wyh 【線段樹】

題目描述  你們wyh學長小時候住在河邊,因為周圍的生態環境非常好,所以經常會有天鵝浮在湖面上,每隻天鵝都長得不一樣,它們偶爾排成一排,偶爾分散開,偶爾也會去其他河畔,wyh學長為了統計它們的個數,編了一個程式賦予它們一個“萌”值,但是這些天鵝很不聽話,一會兒會從別的地方游

2018東北農業大學春季-A:wyh的曲線(Simpson)

時間限制:C/C++ 1秒,其他語言2秒空間限制:C/C++ 262144K,其他語言524288K64bit IO Format: %lld題目描述給你三組數列,分別為現在給你一個式子:然後我們可以將

2018湘潭大學程序設計競賽 G- 又見

class while 快速冪 fir 斐波那契 IT 快速 code ++ 推一推矩陣直接快速冪。 1 #include<bits/stdc++.h> 2 #define LL long long 3 #define pii pair<i

【洛谷mNOIP模擬Day1】T1

lld -s ace can using code 我們 namespace log 題目傳送門:https://www.luogu.org/problemnew/show/P3938 這題出得特別吼啊~~ 通過打表或者大膽猜想斐波那契數列的一些性質,我們不難發現對於一

P2626 數列(升級版) AC於2018.10.20

原題 題目背景 大家都知道,斐波那契數列是滿足如下性質的一個數列: f(1) = 1f(1)=1 f(2) = 1f(2)=1 f(n)=f(n−1)+f(n−2) (n≥2 且 n 為整數)。 題目描述 請你求出第n個斐波那契數列的數mod(或%)2^{31}之

網易招真題 一個數變為數列

題目描述 Fibonacci數列是這樣定義的: F[0] = 0 F[1] = 1 for each i ≥ 2: F[i] = F[i-1] + F[i-2] 因此,Fibonacci數列就形如:0, 1, 1, 2, 3, 5, 8, 13, ...,在Fibonacci數列