2022百度之星程序设计大赛初赛第三场B

statements

solutions

值的一提的是如果直接用矩阵快速幂的话有超时的风险,可以使用十进制优化的是矩阵快速幂,或者使用欧拉降幂,注意到转移矩阵是可对角化的,可以直接在指数上模\phi(p),可以参考下面的题解递推式子+矩阵快速幂+欧拉降幂_矩阵降幂-CSDN博客

#include<bits/stdc++.h> 
#define int long long
using namespace std;
const int mod=998244353,mod0=998244352;
int qpow(int b,int p=mod-2){
    int res=1;
    while(p){
        if(p&1) res=res*b%mod;
        p>>=1;
        b=b*b%mod;
    }
    return res;
}
signed main( )
{
    string s;
    cin>>s;
    int n=0;
    for(int i=0;s[i];i++)
        n=n*10%mod0+(s[i]-'0');
    int ans=qpow(2,n+1);
    if((s.back()-'0')%2==0) ans++;
    else ans--;
    ans=ans*qpow(3)%mod;
    cout<<ans<<'\n'; 
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容