例題10 1 巨大的斐波拉契數 Uva 11582

2021-07-25 22:49:46 字數 1331 閱讀 5893

題意:讓你求斐波拉契數列的第a的b次方項模n的結果。

分析:由於是每一項都對n取模,所以不同的n值都會對應乙個週期,只要迴圈一下。當前項等於f1,前一項等於f0時就可以跳出迴圈了。a的b次方,可以用冪取模的知識,快速分治求出。注意第二個樣例a要先模一下週期,不然會有溢位。剛開是long long 也會溢位,所以要用unsigned long long。

**如下:

//

//created by bluebuff 2016/1/11

//#pragma comment(linker,"/stack:102400000,102400000")

//#include

//#include

//#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include //isstringstream

#include

#include

using

namespace

std;

//using namespace __gnu_pbds;

typedef

long

long ll;

typedef

unsigned

long

long ull;

typedef pair pp;

#define rep1(i, a, b) for(int i = a; i < b; i++)

#define rep2(i, a, b) for(int i = a; i <= b; i++)

#define rep3(i, a, b) for(int i = a; i >= b; i--)

#define clr(a, b) memset(a, b, sizeof(a))

#define mp(x, y) make_pair(x,y)

template

inline

void getmax(t1 &a, t2 b)

template

inline

void getmin(t1 &a, t2 b)

return res;

}void init()}}

}int main()

else

}return

0;}

求第n個斐波拉契數

首先介紹斐波那契數列,斐波那契數列的排列是 1,1,2,3,5,8,13,21,34,55,89,144 依次類推下去,你會發現,它後乙個數等於前面兩個數的和。在這個數列中的數字,就被稱為斐波那契數。如果要找出其中任意乙個數,可以用下面兩種演算法解決 用遞迴法 define crt secure n...

求最小步變成斐波拉契數

題目描述 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數列中的數我們稱為fibonacci數。給你乙個n,你想讓其變為乙個fibonac...

斐波拉契數列帶來的思考

無意間看到一道題 編寫乙個計算前100位斐波那契數的函式。根據定義,斐波那契序列的前兩位數字是0和1,隨後的每個數字是前兩個數字的和。例如,前10位斐波那契數為 0,1,1,2,3,5,8,13,21,34。我一看這不是熟悉的斐波那契數列嘛,簡單!乙個遞迴搞定,就沒重視了。然後晚上自己嘗試寫著玩,卻...