#include <stdio.h>
#include <string.h>
#define ll long long
#define lson l, m, rt<<1
#define rson m + 1, r, rt<<1|1
#define root 1, N, 1
#define MOD 1000000007
const int maxn = 50005;
ll sum[maxn<<2];
void update(int l, int r, int rt, int tp, int x){
if(l == r){
sum[rt] = x;
return;
}
int m = (l + r) >> 1;
if(l < r)
{
if(tp <= m) update(lson, tp, x);
else update(rson, tp, x);
sum[rt] = (sum[rt<<1]*sum[rt<<1|1])%MOD;
}
}
ll query(int L, int R, int l, int r, int rt){
if(L <= l&&r <= R){
return sum[rt];
}
int m = (l + r) >>1;
ll ret = 1;
if(L <= m) ret = (ret * query(L, R, lson))%MOD;
if(m < R) ret = (ret * query(L, R, rson))%MOD;
return ret;
}
int main()
{
int a, b, N, T, q, s;
scanf("%d", &T);
while(T--)
{
memset(sum, 0, sizeof sum);
scanf("%d", &N);
for(int i = 1;i <= N;i++)
{
scanf("%d", &b);
update(root, i, b);
}
scanf("%d", &q);
while(q--)
{
scanf("%d %d %d", &s, &a, &b);
if(s == 0)
printf("%lld\n", query(a, b ,root));
else
update(root, a, b);
}
}
}
HDU 3074 Multiply game
最新推荐文章于 2019-10-06 08:13:14 发布