杭電oj 1005 c語言實現

2021-07-01 22:09:07 字數 1207 閱讀 5952

n題目為:

a number sequence is defined as follows:

f(1) = 1, f(2) = 1, f(n) = (a * f(n - 1) + b * f(n - 2)) mod 7.

given a, b, and n, you are to calculate the value of f(n).

本題考慮迴圈節的知識,由於f(n)由f(n-1)和f(n-2)同時決定,而由數學知識有
(a*f(n-1)+b*f(n-2))mod7 = (

a*f(n-1))mod7 + (b*f(n-2))mod7 =(a*(f(n-1)mod7)mod7 +(b*(f(n-2)mod7)mod7

又由於a和b已經為定值,而f(n-1)mod7 和 f(n-2)mod7  各有7種可能(即0,1,2,3,4,5,6),所以f(n)的迴圈節肯定小於等於7*7=49(即49為最糟糕的情況)
#includeint

main

() }

for(i=0;i<49;i++) //n大於51的情況,由於49為最大迴圈節數,所以i取值從0到48的所有情況至少有1種情況符合f(i)=f(49),f(i+1)=f(50);

if(f[i]==f[49]&&f[i+1]==f[50])

printf("%d\n",t);

}return0;

}

杭電oj1005解題

分析 1,題中 1 a,b 1000,1 n 100,000,000 可知用蠻力肯定行不通。2,a f n 1 b f n 2 mod 7 a 7 f n 1 b 7 f n 2 7 3,因f i 和f i 1 只有49種組合,因為 f i i 1 均只有7種選擇,就是只能是0,1,2,3,4,5,...

杭電OJ1005 水過

這題其實讀題的時候表示不難,但是真正做起來的時候發現其實還挺難的。在讀題的時候就會考慮的大陣列記憶體溢位的問題以及使用迭代來解決,但是這都不知很好的解決方案。在看網上的解答,普遍都是找規律。找到規律後這題就好解了。這題我是看著別人的思路過得,實在慚愧。我的參考文章 這篇文章找到了1008的週期迴圈,...

ACM 杭電 用C語言實現2015

說實話,寫這個我太年輕了,開始先定義陣列,後面發現不能用然後去掉陣列就很快了 這是不用陣列實現的 include intmain 關於此處break 經過m在n內的最大倍數即k之後 j m k 1時 跳出for迴圈,否則執行下一行for迴圈中的語句,輸出錯誤的值,sum歸0 else 常規輸出 re...