[bzoj4833][数论][min-max容斥]最小公倍佩尔数
Description
令(1+sqrt(2))n=e(n)+f(n)*sqrt(2),其中e(n),f(n)都是整數(shù),顯然有(1-sqrt(2))n=e(n)-f(n)*sqrt(2)。令g(
n)表示f(1),f(2)…f(n)的最小公倍數(shù),給定兩個(gè)正整數(shù)n和p,其中p是質(zhì)數(shù),并且保證f(1),f(2)…f(n)在模p意義
下均不為0,請計(jì)算sigma(i*g(i)),1<=i<=n.其在模p的值。
Input
第一行包含一個(gè)正整數(shù) T ,表示有 T 組數(shù)據(jù),滿足 T≤210 。接下來是測試數(shù)據(jù)。每組測試數(shù)據(jù)只占一行,包含 兩個(gè)正整數(shù) n 和 p
,滿足 1≤n≤106,2≤p≤109+7 。保證所有測試數(shù)據(jù)的 n 之和不超過 3×10^6 。
Output
對于每組測試數(shù)據(jù),輸出一行一個(gè)非負(fù)整數(shù),表示這組數(shù)據(jù)的答案。
Sample Input
5
1 233
2 233
3 233
4 233
5 233
Sample Output
1
5
35
42
121
題解
推一下式子
會有e(n+1)=e(n)+2?f(n)e(n+1)=e(n)+2*f(n)e(n+1)=e(n)+2?f(n),f(n+1)=e(n)+f(n)f(n+1)=e(n)+f(n)f(n+1)=e(n)+f(n)
所以e(n+1)=f(n)+f(n+1)e(n+1)=f(n)+f(n+1)e(n+1)=f(n)+f(n+1)
所以f(n+1)=2?f(n)+f(n?1)f(n+1)=2*f(n)+f(n-1)f(n+1)=2?f(n)+f(n?1)
類似斐波那契數(shù)列的式子,結(jié)論有一個(gè)是形如f(n+1)=a?f(n)+b?f(n?1)f(n+1)=a*f(n)+b*f(n-1)f(n+1)=a?f(n)+b?f(n?1)的式子均滿足gcd(f(a),f(b))=f(gcd(a,b))gcd(f(a),f(b))=f(gcd(a,b))gcd(f(a),f(b))=f(gcd(a,b))
那么接下來就和51nod1355是一樣的了
感覺直接抄上去就能過啊…
總結(jié)
以上是生活随笔為你收集整理的[bzoj4833][数论][min-max容斥]最小公倍佩尔数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何解决Maven依赖冲突
- 下一篇: 标称型和数值型(连续型)的区别