tjut 3074
来源:互联网 发布:上海程序员招聘 编辑:程序博客网 时间:2024/06/15 08:41
#include<stdio.h> #include<string.h> #include<stdlib.h> #define Mod 1000000007 #define N 50005 int num[N]; struct cam { int x; //起点 int y; //终点 __int64 mul; //乘积 }list[N*4]; void build(int k,int x,int y) { int mid; list[k].x=x; list[k].y=y; if(list[k].x==list[k].y) { list[k].mul=num[x]; return; } mid=(x+y)/2; build(k<<1,x,mid); build(k<<1|1,mid+1,y); list[k].mul=(list[k<<1].mul*list[k<<1|1].mul)%Mod; } __int64 find(int k,int x,int y) { int mid; if(list[k].x==x&&list[k].y==y) return list[k].mul; mid=(list[k].x+list[k].y)/2; if(x>mid) return find(k<<1|1,x,y); else if(y<=mid) return find(k<<1,x,y); return (find(k<<1,x,mid)*find(k<<1|1,mid+1,y))%Mod; } void update(int k,int x,int y) { int mid; if(list[k].x==x&&list[k].y==x) { list[k].mul=y; return; } mid=(list[k].x+list[k].y)/2; if(x<=mid) update(k<<1,x,y); else update(k<<1|1,x,y); list[k].mul=(list[k<<1].mul*list[k<<1|1].mul)%Mod; } int main() { int i,t; int n,m; int c,a,b; scanf("%d",&t); while(t--) { scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d",&num[i]); build(1,1,n); scanf("%d",&m); while(m--) { scanf("%d %d %d",&c,&a,&b); if(c==0) printf("%I64d\n",find(1,a,b)); else { num[a]=b; update(1,a,b); } } } return 0; }
0 0
- tjut 3074
- tjut 5289
- tjut 5288
- tjut 5294
- tjut 2586
- tjut 5296
- tjut 5297
- tjut 5299
- tjut 5384
- tjut 5387
- tjut 5386
- tjut 5381
- tjut 5400
- tjut 5399
- tjut 5396
- tjut 5398
- tjut 5412
- tjut 5410
- Android开源项目收集
- ClassLoader工作机制
- 笔记3——C++类的一些特性
- 剑指Offer——算法复杂度中的O(logN)底数是多少
- android 艺术开发探索之动画(animation)
- tjut 3074
- tomcat中server.xml配置详解
- linux安装redis
- BoxCars: 3D Boxes as CNN Input for Improved Fine-Grained Vehicle Recognition
- jQuery和Prototype的兼容性和冲突的解决方法
- Spring源代码解析(十):Spring Acegi框架授权的实现
- PHPCMS 模版嵌入PHP代码
- Spark SQL -- Catalyst
- eclipse历史版本下载