竞赛
考级
T3: 这一题因为 nnn 最大可以达到 10610^6106,如果直接计算 114514n114514^n114514n 再取模,数值会非常大,计算会非常慢。所以我们要使用快速幂[1]进行计算。 C++代码: PYTHON代码: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 1. 快速幂的基本思想是利用二分的方式计算幂次,通过将指数不断减半来减少乘法次数,从而降低时间复杂度。 我们使用如下步骤进行计算: 首先设定初始值 s=1s = 1s=1,d=114514d = 114514d=114514。 其次通过二进制拆解指数 nnn,如果当前位为 1,则将 sss 乘上当前的底数 ddd 并与 998244353998244353998244353 取模; 然后每次将 ddd 平方,同时对 998244353998244353998244353 再次进行取模,使得数值不会过大; 最后将 nnn 右移一位,继续计算,直到 n=0n = 0n=0。 ↩︎
yang(Python)
模拟即可,记得开 long long,时间复杂度为 O(n)\mathrm{O} (n)O(n)。
dream_陆军展览(不加团队)
矩阵快速幂解法: 因为114514写全过大,所以要用矩阵快速幂.jpg
复仇者_sxwwsด้้(加团队
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll t,mod; ll qp(ll a,ll b){ ll ans=1; a%=998244353; while(b){ if(b&1){ ans=ansa%998244353; } a=aa%998244353; b>>=1; } return ans; } int main(){ ll b; cin>>b; cout<<qp(114514,b); return 0; }
林圳涵
看题解前请了解快速幂
MuktorFM
T3 本题只要利用for循环直接模拟即可,但是注意要开long long,另外要不断的取模哦。
桌子乱的反义词
我们决不投降
#include<bits/stdc++.h> using namespace std; long long a,b,c=1; int main() { cin>>a; for(int i=1;i<=a;i++){ c*=114514; c%=998244353; } cout<<c; return 0; }
???
#include<bits/stdc++.h> using namespace std; int main(){ long long a,b=1; cin>>a; for(int i=1;i<=a;i++){ b*=114514; b=b%998244353; } cout<<b; return 0; }
LS_YZY
提交答案之后,这里将显示提交结果~