時間限制 3000 ms 記憶體限制 32768 kb **長度限制 100 kb
nowcoder最近在研究乙個數列:* f(0) = 7
* f(1) = 11
* f(n) = f(n-1) + f(n-2) (n≥2)
他稱之為nowcoder數列。請你幫忙確認一下數列中第n個數是否是3的倍數。
輸入包含多組資料。每組資料報含乙個整數n,(0≤n≤1000000)。
對應每一組輸入有一行輸出。如果f(n)是3的倍數,則輸出「yes」;否則輸出「no」。
012345
no題解:我最初的想法是肯定是矩陣快速冪的變式題,就想用矩陣快速冪,並且可以回顧一下矩陣快速冪,但是發現這題沒我想的那麼簡單,我忽略的點在於取模的時候是對1000000007取得,不是足夠大,會出現1000000007*3的倍數的情況,然後改成了0x3f3f3f3f再對3取模就可以了,當然網上有更為簡單的方法,是找規律的,但是我覺得可以當作矩陣快速冪的變式練習來做。noyes
nono
no
ps:最近身體真的每況愈下。。。要加強鍛鍊了。
附上**:
#include#include#include#include#define mod 0x3f3f3f3f
using namespace std;
typedef long long int ll;
int flag;
struct mat
ans,res;
mat mul(mat x,mat y)
} }return t;
}void quickmod(long long int n)
res=mul(res,res);
n>>=1;
} }
int main()
else if(n==1)
else
else}}
return 0;
}
fibonacci數列矩陣快速冪
對於矩陣 1 1 1 0 的n次冪,第一行第二個元素 右上角 的元素即為fibonacci數列的第n項,由此可以根據矩陣的乘法計算fibonacci數列的元素值 矩陣的快速冪利用的也是冪乘的二分法,只不是換成了矩陣的乘法,可以用函式處理。可以定義乙個二維陣列的結構體 typedef struct m...
矩陣快速冪 數列考驗
題面 當 x 10 時,f x x 當 x 10 時,f x a0 f x 1 a1 f x 2 a2 f x 3 a9 f x 10 ai 只能為 0 或 1。現在給定 a0 a9,以及兩個正整數 k m,詢問 f k m 的數值大小 輸出檔案包含多組測試用例,每組測試用例格式如下 第一行給定兩個...
Fibonacci數列(矩陣乘法快速冪)
題目描述 定義 f0 f1 1,fn fn 1 fn 2 n 2 稱為fibonacci數列。輸入n,求fn mod q。其中1 q 30000。輸入描述 第一行乙個數t 1 t 10000 以下t行,每行兩個數,n,q n 109,1 q 30000 輸出描述 檔案包含t行,每行對應乙個答案。樣例...