Alternating Sum 等比數列 逆元

2021-08-21 20:20:00 字數 1058 閱讀 9399

給你  n,a,b,k   string s[ ] 。 n,a,b<=1e9  ,  k<=1e5

問題是利用上面的引數求乙個式子。

其中s[i]是有符號位。題目說明了,超過了字串s長度就會取餘進行迴圈。

就是  s[ i % k ] 

這個題明顯就是利用迴圈節求解。因為n的值太大,跑不完。所以我們需要找到迴圈節直接的關係。

後來通過觀察就知道其實這個是等比數列。

公比:一開始我以為a,b是乙個倍數關係,然而並不是,大家知道浮點數是不可以快速冪的。

為了解決這個問題就有了逆元的出現。

但是逆元求法:

逆元求法

中規中矩有三種方法:1、費馬小定理  2、拓展歐幾里德 3、預處理

到時候會整理出來的。

這個題給了我們mod=1e9+9    大家認真觀察1e9+7也是質數,所以題目其實暗示我們用費馬小定理更直接。

分兩種情況:part=(n+1)/k;

if( q== 1)  ans=迴圈節*part;

if( q ! =1)  ans=

認真處理即可:注意判斷條件裡面,我本來是特判a=b,但是會wa test 9 

後來看了其他人的題解才發現q==1才是該考慮的

#includeusing namespace std;

typedef long long ll;

const ll mod=1e9+9;

const ll maxn=1e5+10;

ll n,a ,b,k;

char s[maxn];

ll qpow(ll a,ll b)

a=a*a%mod;

b>>=1;

}return ans%mod;

}ll ny(ll x)

int main()

ans=rept;

ll q=qpow(b,k);

q=q*qpow(ny(a),k)%mod;

if(q==1)

}else

}printf("%lld\n",ans);

}

「等燈 等燈等燈」, 和 的區別

小記錄。是相等操作符,是全等操作符 的判斷標準為兩個運算元相等則返回true,的判斷標誌是兩個運算元未經轉換就相等則返回true 相等操作符的轉換規則 如果有乙個運算元是布林值,則在比較相等性之前先將其轉換為數值,false轉換為0,而true轉換為1 乙個運算元是字串,另乙個運算元是數值,則在比較...

等保03 等保測評

差分整改 重點 等級測評 等保專案交付存在的問題 等級保護工作角色分工 等級保護整體流程介紹 各個階段產出的文件 定級備案過程及工作內容 依據定級指南確定目標系統的安全保護等級,同時也是對安全保護等級確定過程的說明。1.目標業務系統描述 系統的基本功能 系統的責任部門 系統的網路結構及部署情況 採取...

等專案通知????????????????

自從五一回來,我的小球基本竣工了,工作的緊張度明顯降低了。程式編的沒有任務緊張時候認真了,不過這兩天有所調整,態度上有點起色。五一回來的任務就是把小球給改好。最主要的傘個方面,乙個是記憶體洩露,乙個是俯角和仰角,乙個是消除鍵盤控制的卡殼。磨磨唧唧地改了一周多,總算都改完了。記憶體洩露發現是有個地方n...