清華大學2023年機試 遞推數列 1081

2021-08-07 01:19:22 字數 1204 閱讀 9824

題目描述:

給定a0,a1,以及an=p*a(n-1) + q*a(n-2)中的p,q。這裡n >= 2。 求第k個數對10000的模。

輸入

輸入包括5個整數:a0、a1、p、q、k。

輸出

第k個數a(k)對10000的模。

樣例輸入

20 1 1 14 5

樣例輸出

8359

解題思路:

首先,第一反應是用遞迴解題,然而時間複雜度過大。接著嘗試了用陣列儲存結果,在牛客網的平台上能通過測試,但是陣列開的不夠大,在九度的案例上會出現runtime error(應該是這個原因吧)。在網上查詢資料之後,發現大家解決這類問題用的一般是矩陣乘法(配上快速冪,也叫矩陣二分乘法),看來我的基礎還是不夠好啊。。。

普通思路:

#include 

#define maxn 1000000

int a0, a1, p, q, k;

const int mod = 10000;

int a[maxn];

void init(int k)

} int main()

return

0;}

矩陣乘法思路:

#include 

#define maxn 1000000

int a0, a1, p, q, k;

const int mod = 10000;

struct matrix;

void matrixmul(matrix *m1, matrix *m2)

int main()

if (k == 1)

matrix m = , base = ;

int num = k-1;

while(num != 0)

printf("%d\n", (m.m00

*a1 + m.m01*a0)%mod);

}return

0;}

runtime error常見原因

矩陣乘法經典題目

參考部落格

九度OJ 1082 清華大學2023年機試

題目描述 使用 伺服器能夠在一定程度上隱藏客戶端資訊,從而保護使用者在網際網路上的隱私。我們知道n個 伺服器的ip位址,現在要用它們去訪問m個伺服器。這 m 個伺服器的 ip 位址和訪問順序也已經給出。系統在同一時刻只能使用乙個 伺服器,並要求不能用 伺服器去訪問和它 ip位址相同的伺服器 不然客戶...

清華大學2023年機試 進製轉換 1080

題目描述 將m進製的數x轉換為n進製的數輸出。輸入 輸入的第一行包括兩個整數 m和n 2 m,n 36 下面的一行輸入乙個數x,x是m進製的數,現在要求你將m進製的數x轉換成n進製的數輸出。輸出 輸出x的n進製表示的數。樣例輸入 16 10 f樣例輸出 15解題思路 就是進製轉換,但是需要注意的是資...

清華大學2023年機試 最小郵票數 1209

題目描述 有若干張郵票,要求從中選取最少的郵票張數湊成乙個給定的總值。如,有1分,3分,3分,3分,4分五張郵票,要求湊成10分,則使用3張郵票 3分 3分 4分即可。輸入 有多組資料,對於每組資料,首先是要求湊成的郵票總值m,m 100。然後是乙個數n,n 20,表示有n張郵票。接下來是n個正整數...