题解 | 子数列求积

子数列求积

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

#include<bits/stdc++.h>
using namespace std;
#define int long long
int MOD=1e9+7;
int mypow(int a,int b){
    int r=1;
    for(;b;b>>=1,a=(a*a)%MOD){
        if(b&1)r=(a*r)%MOD;
    }
    return r;
}
int inv(int a){
    return mypow(a,MOD-2);
}
signed main(){
    int n,q;
    cin>>n>>q;
    vector<int> a(n+1);
    int r=1;
    vector<int> ans(n+1);
    ans[0]=1;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        r=(a[i]*r)%MOD;
        ans[i]=r;
    }
    while(q--){
        int l,r;
        cin>>l>>r;
        cout<<(ans[r]*inv(ans[l-1]))%MOD<<" ";
    }
    return 0;
}

全部评论

相关推荐

大愣子衰哥:老哥,是正式还是实习
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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