給你 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...