题解 | 子数列求积

子数列求积

https://www.nowcoder.com/practice/5daab034da954f5697dcf96c1808d34f

#include <iostream>
#include <vector>
using namespace std;

const int M=1e9+7;

long long kpow(long long a,long long x){        //快速幂
    long long res=1;
    a%=M;
    while(x){
        if(x%2) res=(res*a)%M;
        a=(a*a)%M;
        x>>=1;
    }
    return res;
}

int main() {
    int n, q;
    long long a;
    cin>>n>>q;
    vector<long long> s(n+1, 1);
    for(int i=1;i<=n;i++){
        cin>>a;
        s[i]=(s[i-1]*a)%M;                      //前缀积
    }

    int l,r;
    while(q--){
        cin>>l>>r;
        cout<<(s[r]*kpow(s[--l], M-2))%M<<" ";  //费马小定理 求逆元
    }
}

全部评论

相关推荐

2025-12-28 22:19
门头沟学院 Java
不敢追165女神:简历写得毫无特点,你说你要是大二或者大三找寒假实习到暑期实习这段时间,你的简历还能约到面试。但是你是研究生哥,面试官不会因为你是研究生而降低要求,反而会觉得你是研究生才学了这么一点?为什么我不找个同阶段的本科生?
简历中的项目经历要怎么写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务