題意:讓你求斐波拉契數列的第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。我一看這不是熟悉的斐波那契數列嘛,簡單!乙個遞迴搞定,就沒重視了。然後晚上自己嘗試寫著玩,卻...