codeforces 450B. Jzzhu and Sequences 解题报告
生活随笔
收集整理的這篇文章主要介紹了
codeforces 450B. Jzzhu and Sequences 解题报告
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目鏈接:http://codeforces.com/problemset/problem/450/B
題目意思:給出 f1 和 f2 的值,以及n,根據公式:fi = fi-1 + fi+1,求出fn是多少。
? ? 這題通過手工模擬,可以發現它有一個周期的:以6為周期!
? ? f1 = f1, ? f2 = f2, ? f3 = f2 - f1
? ? f4 = -f1, ?f5 = -f2, ?f6 = -f2 + f1?
? ? 以前從來不知道負數的模怎么求,這題剛好考到!其實根據第二個test約莫猜到,就是要加上要mod的那個數,即1e9+7,可恨的是,一開始 mod多少沒有搞清楚(寫成n mod 7了),mod 7 = 0,即f[7]其實是等于f[1]的;然后改了之后又把while寫成if(這個while結束的條件是被除數 > 0為止)被人hack了,還全然不知呢,最后查不出來......唉,經驗還是很不夠啊,繼續努力!!!
? ??
1 #include <iostream> 2 #include <cstdio> 3 #include <cstdlib> 4 #include <cstring> 5 using namespace std; 6 7 typedef long long ll; 8 ll f[6+5]; 9 ll x, y, n; 10 11 int main() 12 { 13 while (scanf("%lld%lld%lld", &x, &y, &n) != EOF) 14 { 15 ll MOD = 1e9+7; 16 f[1] = x; 17 f[2] = y; 18 f[3] = y - x; 19 f[4] = -x; 20 f[5] = -y; 21 f[6] = x - y; 22 n %= 6; 23 if (n == 0) // 因為沒有f[0]的定義!f[k*6] 是等于 f[6]的! 24 { 25 while (f[6] < 0) 26 f[6] += MOD; 27 printf("%lld\n", f[6]%MOD); 28 } 29 else 30 { 31 while (f[n] < 0) 32 f[n] += MOD; 33 printf("%lld\n", f[n]%MOD); 34 } 35 } 36 return 0; 37 }?
? ??
轉載于:https://www.cnblogs.com/windysai/p/3855919.html
總結
以上是生活随笔為你收集整理的codeforces 450B. Jzzhu and Sequences 解题报告的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2-4. BCD解密(10)
- 下一篇: UITableView使用指南