分析: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,6中的乙個。故週期<=49。
解題:
1,先求週期,順便把第乙個週期的f(n)求出來。
2,利用週期,直接求其餘f(n)。
**:
#include
#define m 52
intmain()
,t;
while(scanf("%d %d %d",&a,&b,&n),a!=0||b!=0||n!=0)
t=i-4;//週期
if(n<4)printf("%d\n",f[n]);
elseprintf("%d\n",f[(n-4)%t+4]); //注意,並不是f[n%t]
}
return0;
}
杭電OJ1005 水過
這題其實讀題的時候表示不難,但是真正做起來的時候發現其實還挺難的。在讀題的時候就會考慮的大陣列記憶體溢位的問題以及使用迭代來解決,但是這都不知很好的解決方案。在看網上的解答,普遍都是找規律。找到規律後這題就好解了。這題我是看著別人的思路過得,實在慚愧。我的參考文章 這篇文章找到了1008的週期迴圈,...
OJ1005 田忌賽馬
include define num 9999 int main else scanf d number return 0 description 賽馬是一古老的遊戲,早在西元前四世紀的中國,處在諸侯割據的狀態,歷史上稱為 戰國時期 在魏國作官的孫臏,因為受到同僚龐涓的 被齊國使臣救出後,到達齊國國...
杭電oj 1005 c語言實現
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 本題考慮迴圈節的知識,由於...