利用斐波拉契數列的通項公式。
先利用二次剩餘和逆元得出三個常數。
將式子多項式展開,發現等比數列的規律。
遍歷k,等比求和,用逆元求組合數。
#include
#include
#include
using
namespace std;
typedef
long
long ll;
const
int n =
100005
;const ll mod =
1000000009
;ll fac[n]
,a[n]
,b[n]
;void
init()
}ll quick_mod
(ll a,ll b,ll mod)
b >>=1;
a = a * a % mod;
}return ans;
}ll solve
(ll n,ll k)
ll m =
quick_mod
(383008016
,mod-
2,mod)
; ans = ans *
quick_mod
(m,k,mod)
% mod;
ans =
(ans % mod + mod)
% mod;
return ans;
}int
main()
return0;
}
2020 牛客多校第一場
a b suffix array f infinite string comparision jzk開場提出了兩倍最大的長度,然後 dh 說直接比較a b和b a即可,由於是訓練賽,不想寫太長的 然後交了一發直接比較的 就過了 includeusing namespace std string s1...
2020杭電多校第一場
簽到題,問長度為n且回文子串的個數最少的串的數量 想到 abcabcabc.排列回文子串最少為3 n 1,2,3特殊處理一下 include using namespace std typedef long long ll define rep i,a,b for register int i a ...
2013多校第一場
c 找規律的題。主要是把題目裡的加法與去火柴的模型聯絡起來,然後利用排列組合的原理找公式。小結 我一開始一直在研究每個數和每個數出現的次數,以及題目給的f n 2 n 1 有啥關係,最後也沒研究個啥結論,看題解才知道的。include include include include include ...