小明今天在做數學題的時候碰到這樣乙個問題,乙個數列的定義如下:
f(1) = 1, f(2) = 1, f(n) = (a * f(n - 1) + b * f(n - 2)) mod 7。
現在給你a,b和n的值,請問你f(n)的值是多少?
輸入包含多組測試資料。
每組輸入3個整數a,b和n(1<=a,b<=1000,1<=n<=100000000),當輸入的3個數都為0時,輸入結束。
對於每組輸入,輸出f(n)的值。
1 1 3
1 2 10
0 0 025
這題得注意下:
1.f[n]可能沒有到經過乙個迴圈,這個數一般比較小,直接輸出答案。
2.判斷迴圈節的時候,這裡採用只判斷迴圈的前兩個數f[i-1]==f[j-1]&&f[i]==f[j],我一直在懷疑可能有沒有迴圈節裡可能存在後面的元素與前兩個元素相同的情況。比如110211 110211,如果n=9,則s=2,e=6,那麼s+(n-e)%(e-s)=5,f[9]=0而f[5]=1,不知道為什麼標稱沒有考慮。
3.迴圈節的長度可能為1,也就是所有的元素都相等。
**:
#includeusing namespace std;
int f[10000];
int main()
matrix;
matrix mut(matrix &a,matrix &b)}}
return tmp;
}matrix pow_m(matrix &a,int n)
return b;
}int main(void)
return 0;
}
20170117 機房 練習賽
現代科學,面廣枝繁,不是一輩子學得了的。惟一的辦法是集中精力,先打破一缺口,建立一塊或幾塊根據地,然後乘勝追擊,逐步擴大研究領域。此法單刀直入,易見成效。王梓坤 我熱愛生活,我是一名快速成長的oier include include include define program name color...
機房練習賽 Dinner
本來看到這道題的第一想法是環形區間dp的,但是模擬完樣例我就恍然大悟,在10的時間內可以同時讓1,5點完餐,那不就是找最大值得最小值嗎?然後就是二分答案了,二分最少時間。然後就是我的玄學check 我在考試的時候是想到了變成二倍鏈在區間上處理的,但我直接o n 處理了每個區間的和不大於x的塊,然後列...
牛客練習賽34 C
題目描述 小w有m條線段,編號為1到m。用這些線段覆蓋數軸上的n個點,編號為1到n。第i條線段覆蓋數軸上的區間是l i r i 覆蓋的區間可能會有重疊,而且不保證m條線段一定能覆蓋所有n個點。現在小w不小心丟失了一條線段,請問丟失哪條線段,使數軸上沒被覆蓋到的點的個數盡可能少,請輸出丟失的線段的編號...