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 兩組輸入資料間無空行。輸...