AcWing 算法提高课 通过递推求等比数列的和(防止使用逆元出现问题)

基于分治的思想:

 

 例题:https://www.acwing.com/problem/content/99/

模板:

求num^0+num^1+...+num^k

复制代码
const int MOD=9901;
int QuickExp(int base,int exp)
{
    base%=MOD;
    int res=1;
    while(exp)
    {
        if(exp&1)
        {
            res*=base;
            res%=MOD;
        }
        base*=base;
        base%=MOD;
        exp>>=1;
    }
    return res;
}
int Sum(int num,int k)
{
    if(k==0) return 1;
    if(k%2)
    {
        return (1+QuickExp(num,k/2+1))*Sum(num,k/2)%MOD;
    }
    else
    {
        return (1+num*Sum(num,k-1))%MOD;
    }
}
View Code
复制代码

 

posted @   80k  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示