第一行输入两个整数
,分别表示序列长度与查询数量。
第二行输入
个整数
,表示序列元素。
此后
行,第
行输入两个整数
,表示一次查询的左右端点。
输出一行
个用空格隔开的整数,第
个整数为第
次查询的答案。
5 3 1 2 3 4 5 1 2 1 3 2 5
2 6 120
区间的乘积为
;
的乘积为
;
的乘积为
。
from functools import cache
from itertools import accumulate
MOD = int(1e9 + 7)
n, q = map(int, input().split())
arr = list(map(int, input().split()))
pre = list(accumulate(arr, lambda a, b: a * b % MOD))
pre.append(1)
@cache
def inverse(x):
return pow(x, MOD - 2, MOD)
def divide(a, b):
return a * inverse(b) % MOD
ans = []
for _ in range(q):
l, r = map(int, input().split())
ans.append(divide(pre[r - 1], pre[l - 2]))
print(' '.join(str(x) for x in ans)) #include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
int fastpow(int x,int p){
int ans=1;
while(p){
if(p&1) ans=ans*x%mod;
x=x*x%mod;
p>>=1;
}
return ans;
}
void solve(){
int n,q;cin>>n>>q;
vector<int> arr(n+1,1);
for(int i=1;i<=n;i++) cin>>arr[i];
vector<int> pre(n+1,1);
for(int i=1;i<=n;i++) pre[i]=arr[i]*pre[i-1]%mod;
while(q--){
int l,r;cin>>l>>r;
cout<<pre[r]*fastpow(pre[l-1],mod-2)%mod<<" ";
}
}
signed main(){
std::cin.tie(nullptr)->sync_with_stdio(false);
int T = 1;
// std::cin>>T;
while(T--) solve();
return 0;
} #include <bits/stdc++.h>
using namespace std;
using ll=long long;
const ll mod=1e9+7;
vector<ll> lie={1};
ll mo(ll a)
{
ll ans=1;
for(ll i=1e9+5;i>0;i/=2)
{
if((i&1)==1)
{
ans*=a;
ans%=mod;
}
a*=a;
a%=mod;
}
return ans;
}
int main() {
int n,q;cin >> n >> q;
ll f=1;
for(int i=1;i<=n;i++)
{
ll num;cin >> num;
f*=num;
f%=mod;
lie.push_back(f);
}
for(int i=0;i<q;i++)
{
ll l,r;cin >> l >> r;
ll ans=lie[r]*mo(lie[l-1])%mod;
cout << ans <<' ';
}
}
/*
⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣤⣤⣤⣤⣤⣤⣤⡀⠀⠀⠀⣾⡟⣻⣿⠇⠀⠀⠀⣠⣶⣶⣶⣶⣶⣤⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⣠⡶⢾⣿⣿⣿⣿⣿⣿⣿⣿⣧⣤⣴⣶⡿⣿⡿⠷⢶⣶⣤⣤⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢰⡿⠁⠀⠀⠀⠉⢉⣩⣽⡿⠟⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠛⠛⠿⣿⣿⣿⣿⣿⣿⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⣠⣶⠿⣿⠇⠀⠀⠀⣠⣴⠿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⢷⣦⡉⠙⠛⠿⣶⣄⠀⠀⠀⠀⠀⠀
⠀⠀⢠⣿⠁⢸⡟⠀⠀⢠⣾⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⢻⣦⡀⠀⠀⢻⡇⠀⠀⠀⠀⠀
⠀⠀⢸⡏⠀⢸⡇⠀⣰⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡀⠀⠀⣠⡀⠀⠀⠀⠘⢿⣆⠀⢸⣇⠀⠀⠀⠀⠀
⠀⠀⣿⡇⠀⢸⣷⣼⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⡄⠀⠀⠀⠀⠀⠀⣿⢿⣆⠀⣿⣧⡄⠀⠀⠀⠈⢻⣧⣿⣿⡇⠀⠀⠀⠀
⠀⠀⣿⡇⠀⠀⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡾⠋⢻⣆⠀⠀⠀⠀⢰⡏⠀⠙⢷⣌⡉⠀⠀⡀⠀⠀⠀⢻⣿⢸⡇⠀⠀⠀⠀
⠀⢀⣿⢀⣤⣶⠟⠁⠀⠀⠀⠀⠀⠀⢰⡆⠀⠀⣠⣾⠏⠁⠀⠀⠙⢷⣦⣀⣴⠟⠀⠀⠀⠀⠙⠻⣦⣌⣿⠀⠀⠀⢨⣿⢸⡧⠀⠀⠀⠀
⠀⢸⣿⠈⠻⢷⡆⠀⠀⠀⠀⠀⠀⢀⣿⣣⣴⡾⠋⠀⣀⣤⡀⠀⠀⠀⠈⠙⠁⠀⠀⣤⣤⣀⠀⠀⠀⠙⣿⠂⠀⠀⢸⣯⢸⣿⠀⠀⠀⠀
⠀⣸⡇⠀⠀⢺⡇⠀⠀⠀⠀⠀⠀⢸⡏⠉⠁⣠⣴⣾⣿⠟⠃⠀⠀⣾⣿⠟⠀⠀⠀⠈⠻⣿⣷⣦⡀⠀⣿⢀⣀⠀⣸⡟⢸⣿⠀⠀⠀⠀
⠀⣿⡇⠀⠀⠸⣧⠀⣷⡀⠀⠀⠀⢸⣧⠀⠾⠿⠛⠉⠀⠀⠀⠀⢠⣿⣿⠃⠀⠀⠀⠀⠀⠀⠙⠿⠇⠘⣿⡟⠋⣠⡿⠁⢸⣿⠀⠀⠀⠀
⠀⣿⠁⠀⠀⠀⠻⣧⡸⣷⡀⠀⢀⣀⢻⣆⠀⠀⠀⠀⠀⠀⠀⠀⠘⠿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣡⣶⠟⠁⠀⢸⣿⠀⠀⠀⠀
⢸⡿⠀⠀⠀⠀⠀⠙⢿⣾⣷⣆⠈⠛⣿⡟⠀⣇⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⡟⠋⠿⠛⠁⠀⠀⠀⠸⣿⠀⠀⠀⠀
⢸⡇⠀⠀⠀⠀⠀⠀⠀⠈⠉⠛⢿⣶⣾⡧⠀⠙⠚⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀
⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣧⠀⠀⠀⠀⠀⠀⠀⠀⣿⡇⠀⠀⠀
⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡀⠀⠈⣿⡄⠀⠀⠀⠀⠀⠀⠀⢹⣧⠀⠀⠀
⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⠇⠀⠀⠀⠀⠀⣦⠀⠀⠀⠀⢠⣶⠀⠀⣶⡄⠀⠀⠀⣸⡿⠀⠀⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⣿⡄⠀⠀
⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⡟⠀⠀⠀⠀⠀⠀⢿⣧⡀⠀⢀⣼⡟⠀⠀⠘⠿⣶⣤⣶⠟⠁⠀⠀⢸⣷⠀⠀⠀⠀⠀⠀⠀⠀⠹⣷⠀⠀
⠁⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⠃⠀⠀⠀⠀⠀⠀⠀⠙⠻⠿⠟⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣆⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⡀
*/