uva11582 斐波拉切數列迴圈節 尤拉定理降冪

2021-07-14 16:48:24 字數 1560 閱讀 9341

the i』th fibonacci number f(i) is

recursively defined in the following

way:

• f(0) = 0 and f(1) = 1

• f(i + 2) = f(i + 1) + f(i) for

every i ≥ 0

your task is to compute some

values of this sequence.

input

input begins with an integer t ≤

10, 000, the number of test cases.

each test case consists of three integers

a, b, n where 0 ≤ a, b < 2

64 (a and b will not both be zero) and

1 ≤ n ≤ 1000.

output

for each test case, output a single line containing the remainder of f(a

b ) upon division by n.

sample input

3 1 1 2

2 3 1000

18446744073709551615 18446744073709551615 1000

sample output

1 21

250題目意思:

給a,b,n三個數,求f(a^b)%n

a,b最大值2^64-1,用unsigned long long n=1000

思路:

打表找出每個n的迴圈節及其長度,降下冪(不降也行)。

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define ull unsigned long long

const

int max_n=1005;

int euler[max_n<<4];//注意這裡要降冪的話求的是迴圈節長度的尤拉函式,大於1005

void euler_init()

int quickpowmod(ull x,ull y, int mod)

return ret;

}int g[max_n];

int f[max_n][max_n<<4];//迴圈節長度要大於1005,因為是兩個相同(最差應該是max_n的平方,但開不了這麼大)

ull a,b;

int t,ans,n;

void get_gf()}}

}int main()

ans=quickpowmod(a1,b1,g[n]);

cout

0;}

Uva 11582 巨大的斐波那契數 模運算

題意 計算 f a b n 分析 1 斐波那契數列是 f i 2 f i 1 f i 2 詢問次數是10 4,打表處理 設 f n,i 是 f i n 的餘數 3 根據模運算可以知道 f n,i f n,i 1 f n,i 2 n 4 a b的處理了,a,b 2 64,資料很大,但是可以發現乙個特徵...

UVa 11582 巨大的斐波那契數!(冪取模)

題意 輸入兩個非負整數a b和正整數n,你的任務是計算f a b 除以n的餘數。f 0 0,f 1 1,f i 2 f i 1 f i 思路 因為餘數最多n種,所以最多n 2項就會出現重複。計算出週期,之後冪取模算出週期內的第幾個數。1 include 2 include 3 include 4 i...

41 求斐波拉切數列

41 求斐波拉切數列 問題描述 斐波拉切數列a1,a2,an的定義如下 a1 1 a2 1 an an 1 an 2 n 2 求出第n項an的值。輸入說明 你的程式需要從標準輸入裝置 通常為鍵盤 中讀入多組測試資料。每組輸入資料由一行組成,其中只有乙個正整數n 0 n 20 兩組輸入資料間無空行。輸...