题目;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. yii NAV x下拉

    $menuItems[] = [ 'label' => "<img src='/images/small.jpg'>", 'url' => ['/site/ ...

  2. 内核 platform_get_resource() 函数解析

    struct resource *platform_get_resource(struct platform_device *dev,            unsigned int type, un ...

  3. vue router 懒加载实现

    在vue-cli脚手架中router文件夹中有index.js文件,里面的内容是 import Vue from 'vue'import Router from 'vue-router'import ...

  4. Python str list to list

    eg1: My csv data like this below,i wt count list nums 2018上,"['C', 'B', 'B', 'B', 'D', 'A', 'B' ...

  5. 1.3.1、CDH 搭建Hadoop在安装之前(端口---Cloudera Manager和Cloudera Navigator使用的端口)

    下图概述了Cloudera Manager,Cloudera Navigator和Cloudera Management Service角色使用的一些端口: Cloudera Manager和Clou ...

  6. JIT物料在途未清PO作为供给

    以下是本应在TEMP中处理,目前是写到FP_CHECK_SAP_DATA中 ----JIT物料在途未清PO作为供给 add by landor on 20180809 INSERT INTO SAP_ ...

  7. django admin后台显示中文

    在settings中设置 LANGUAGE_CODE = ‘zh-Hans’

  8. Hadoop详细安装步骤

    hadoop安装:(分布式模式)参考地址:http://dblab.xmu.edu.cn/blog/install-hadoop/ http://dblab.xmu.edu.cn/blog/insta ...

  9. Jmeter:性能测试指南(转)

    http://yukinami.github.io/2015/11/26/%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95%E6%8C%87%E5%8D%97/ 性能测试指南 ...

  10. python websocket网页实时显示远程服务器日志信息

    功能:用websocket技术,在运维工具的浏览器上实时显示远程服务器上的日志信息 一般我们在运维工具部署环境的时候,需要实时展现部署过程中的信息,或者在浏览器中实时显示程序日志给开发人员看.你还在用 ...