题目;http://acm.hdu.edu.cn/showproblem.php?pid=5475

题意就是给X赋初值1,然后给Q个操作,每个操作对应一个整数M;如果操作是1则将X乘以对应的M,如果是2则除以第M次操作对应的M',求最后X的值对给定值取摸的结果,

直接暴力会爆long long,用数组存每一步的话 会超时,所以用线段树优化进行区间更新

 #include<cstdio>
using namespace std;
typedef long long ll;
struct point {
int l,r;
ll sum;
};
point tree[*];
int n,m;
void build(int i,int left,int right)
{
tree[i].l=left;
tree[i].r=right;
if (left==right)
{
tree[i].sum=;
return;
}
int mid=(left+right)>>;
build(i<<,left,mid);
build(i<<|,mid+,right);
tree[i].sum=(tree[i<<].sum*tree[i<<|].sum)%m;
}
void update(int i,int num,int val)
{
if (tree[i].l==tree[i].r)
{
tree[i].sum=val;
return;
}
int mid=(tree[i].l+tree[i].r)>>;
if (num<=mid) update(i<<,num,val);
else update(i<<|,num,val);
tree[i].sum=(tree[i<<].sum*tree[i<<|].sum)%m;
}
ll _find(int i,int left,int right)
{
ll ans=;
if (left<=tree[i].l&&tree[i].r<=right)
return tree[i].sum;
int mid=(tree[i].l+tree[i].r)>>;
if (left<=mid) ans*=_find(i<<,left,right)%m;
if (right>mid) ans*=_find(i<<|,left,right)%m;
return ans%m;
}
int main()
{
int t,x,y,i,w=;
scanf("%d",&t);
while (t--)
{
printf("Case #%d:\n",w++);
scanf("%d %d",&n,&m);
build(,,n);
for (i=;i<=n;i++)
{
scanf("%d %d",&x,&y);
if (x==)
{
update(,i,y);
printf("%I64d\n",_find(,,i)%m);
}
else
{
update(,y,);
printf("%I64d\n",_find(,,i)%m);
}
}
}
return ;
}

hdu 5475(2015上海网赛) An easy problem的更多相关文章

  1. hdu 5475 模拟计算器乘除 (2015上海网赛H题 线段树)

    给出有多少次操作 和MOD 初始值为1 操作1 y 表示乘上y操作2 y 表示除以第 y次操作乘的那个数 线段树的叶子结点i 表示 第i次操作乘的数 将1替换成y遇到操作2 就把第i个结点的值 替换成 ...

  2. ACM学习历程—HDU5475 An easy problem(线段树)(2015上海网赛08题)

    Problem Description One day, a useless calculator was being built by Kuros. Let's assume that number ...

  3. hdu 5493 (2015合肥网赛) Queue

    题目;http://acm.hdu.edu.cn/showproblem.php?pid=5493 题目大意,t组数据,n个人,n行每行分别是人的身高和这个人的左边或右边比他高的人的个数,输出符合条件 ...

  4. hdu 5491(2015合肥网赛)The Next

    题目;http://acm.hdu.edu.cn/showproblem.php?pid=5491 题意就是,T组测试数据.然后L,S1,S2.L的二进制中有x个1,x满足  S1<=x< ...

  5. hdu 5455 (2015沈阳网赛 简单题) Fang Fang

    题目;http://acm.hdu.edu.cn/showproblem.php?pid=5455 题意就是找出所给字符串有多少个满足题目所给条件的子串,重复的也算,坑点是如果有c,f以外的字符也是不 ...

  6. hdu 5461(2015沈阳网赛 简单暴力) Largest Point

    题目;http://acm.hdu.edu.cn/showproblem.php?pid=5461 题意就是在数组中找出a*t[i]*t[i]+b*t[j]的最大值,特别注意的是这里i和i不能相等,想 ...

  7. hdu 5459(2015沈阳网赛) Jesus Is Here

    题目;http://acm.hdu.edu.cn/showproblem.php?pid=5459 题意 给出一组字符串,每个字符串都是前两个字符串相加而成,求第n个字符串的c的各个坐标的差的和,结果 ...

  8. hdu 5443 (2015长春网赛G题 求区间最值)

    求区间最值,数据范围也很小,因为只会线段树,所以套了线段树模板=.= Sample Input3110011 151 2 3 4 551 21 32 43 43 531 999999 141 11 2 ...

  9. ACM学习历程—HDU5476 Explore Track of Point(平面几何)(2015上海网赛09题)

    Problem Description In Geometry, the problem of track is very interesting. Because in some cases, th ...

随机推荐

  1. unity3d热更新插件uLua学习整理

    前言 IOS不能热更新,不是因为不能用反射,是因为System.Reflection.Assembly.Load 无法使用System.Reflection.Emit 无法使用System.CodeD ...

  2. tabel 选中行变色和取当前选中行值等问题

    先把代码贴出来 $("#tableId tbody tr").mousedown(function () {        $('#tableId  tr').each(funct ...

  3. Numpy知识(三)

    ndarray的花式索引. 正负数索引,正数就是从0开始的下标正向寻找,负数是-1开始的负向寻找. arr[[1,5,2,6],[0,3,1,2]]:拿取arr[1,0],arr[5,3],arr[2 ...

  4. 安装PostGIS 2.1.1 时遇到checking for library containing GDALAllRegister... no

    在postgis中执行./configure时,遇到 checking for library containing GDALAllRegister... no 的错误信息 [root@test po ...

  5. java fastJson

    // 大区的数据 String cityList = "[{'title':'华北','value':'1','children':[{'title':'山东','value':'1.1', ...

  6. flume 使用手册

    以下jie皆来自官网: 1:首先版本是flume 1.8 查看版本:  bin/flume-ng version 2:配置与启动 https://flume.apache.org/FlumeUserG ...

  7. uWSGI和WSGI区别

    uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换.WSGI是一种Web服务器网关接口.它是一 ...

  8. redis主从复制踩到的那些坑

    一.报错:* MASTER <-> SLAVE sync started # Error condition on socket for SYNC: No route to host解决: ...

  9. 由于html元素加载导致的问题

    js中要求执行的事件是在完全加载完,但由于本地环境测试一直没发现出问题,在上线后由于网络延迟导致元素加载慢,而事件执行完,没达到预期目标. 这时就需要用到属性 readyState readyStat ...

  10. zabbix3.0.4安装部署与SendEmail报警配置

    MySQL:5.6.21 nginx:1.62 PHP:5.7 pcre:8.32 zabbix:3.0.4 LNMP安装步骤略过 # tar xvf zabbix-3.0.4.tar.gz # cd ...