2192: hzk又在打人
Time Limit: 12 Sec Memory Limit: 512 MB
Submit: 52 Solved: 1
[Submit][Status][Web Board]
Description
hzk又要打人了,他让我们做一个cpu能够计算一些简单的指令,首先他有n条指令,指令形如”c x”,其中c ={+,^,*},x是一个非负整数.
+ a , * a , ^ a分别代表加,乘,乘方.假设我们现在有+ 2 , * 3, ^ 2 三个指令那么对于输入的x,我们得到输出 ((x+2)*3)^2 , 比如x=2的时候,那么输出结果为144.
现在hzk要求cpu有2种操作
1、1 x 表示输入一个非负整数x,然后输出相应的结果 ,因为结果可能会很大所以我们找一个吉利数字取模比如 17017
2、2 p c x 表示对于把第p个指令改成c x ; c是运算符{^,+,*},x是一个非负整数.
现在hzk要我们做一个这样的cpu,可是我们真的做不出来了,你能帮帮我们吗?
Input
第一行一个数字 T 代表总共有T组测试,(T<=5)
接下来每一组测试第一行有两个数字 n,m表示n条指令,m次操作.(1<=n,m<=10^5)
接下来n行,每行是一条指令形如 “c x”,意义如上所述。(0<=x<17017)
接下来m行,表示m次操作,操作形如”1 x”或者”2 p c x”。(0<=x<17017 , 1<=p<=n)
Output
对于每组测试的操作1,输出对应的答案(mod 17017)。每个数字一行
Sample Input
2
3 2
+ 3
* 3
^ 2
2 1 + 2
1 2
2 2
^ 2
+ 4
1 2
1 3
Sample Output
144
8
13
HDU 5238 Calculator(中国剩余定理+线段树)
17017=7*11*13*17
对每个质因子用线段树维护一个表
表示输入经过一系列操作会得到啥
CRT合并