题意:

给出一个计算的序列,包含{+,*,^}三种运算。给出两种操作,1是给出初始值,求按照序列计算的答案,2是修改序列中某个位置的数和运算符。

描述:

问题最后要把结果对29393去模,把模拆分为7*13*17*19,那么如果能够在每次修改后求出

t1 = ans%7; t2=ans%13, t3=ans%17, t4=ans%19.

那么问题的解就是模方程组

x≡t1(mod)7;

x≡t2(mod)13;

x≡t3(mod)17;

x≡t4(mod)19;

方程组的解。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define rep(i,n) for(int i=0;i<n;i++)
const int M = 29393;
const int m[] = {7,13,17,19};
const int N = 50505;
int sum[N<<2][4][20],num[N];
char str[N];
int Pow(int x,int y,int dd){int a=x,ans=1;while(y){if(y&1) ans=(ans*a)%dd;y>>=1; a=(a*a)%dd;}return ans;
}
char src[10];
void read(int i){scanf("%s",src);int len=strlen(src);str[i]=src[0];   num[i]=0;for(int j=1;j<len;j++) {num[i]=num[i]*10+src[j]-'0';}
}
int cal(int i,int x,int p){if(str[i]=='+') return (x+num[i])%m[p];else if(str[i]=='^') return Pow(x,num[i],m[p]);return (x*num[i])%m[p];
}
void push_up(int l,int r,int rt,int i){rep(j,m[i]) sum[rt][i][j]=sum[rt<<1|1][i][sum[rt<<1][i][j]];
}
void build(int l,int r,int rt,int i){if(l==r) {rep(j,m[i]) sum[rt][i][j]=cal(l,j,i);return ;}int mid=(l+r)>>1;build(lson,i);build(rson,i);push_up(l,r,rt,i);
}
void update(int l,int r,int rt,int i,int p){if(l==r) {rep(j,m[i]) sum[rt][i][j]=cal(l,j,i);return ;}int mid=(l+r)>>1;if(p<=mid) update(lson,i,p);else update(rson,i,p);push_up(l,r,rt,i);
}
void gcd(int a,int b,int& d,int& x,int& y){if(!b) {d=a; x=1; y=0;}else {gcd(b,a%b,d,y,x); y-=x*(a/b);}
}
int inv(int a,int n){int d,x,y;gcd(a,n,d,x,y);return d==1 ? (x+n)%n:-1;
}
int w[4];
void init(){rep(i,4) w[i]=M/m[i];rep(i,4) {w[i]=w[i]*inv(w[i]%m[i],m[i]);}
}
int kase=1,n;
main()
{init();int T;scanf("%d",&T);while(T--){int Q;scanf("%d %d",&n,&Q);for(int i=1;i<=n;i++) read(i);rep(i,4) {build(1,n,1,i);}printf("Case #%d:\n",kase++);while(Q--){int cmd,x,y;scanf("%d %d",&cmd,&x);if(cmd==1){int ans=0;rep(i,4) ans=(ans+w[i]*sum[1][i][x%m[i]])%M;printf("%d\n",ans);}else{read(x);rep(i,4) update(1,n,1,i,x);}}}
}

HDU - 5238(剩余定理)相关推荐

  1. 中国剩余定理及扩展中国剩余定理

    目录 中国剩余定理CRT 扩展中国剩余定理ExCRT TJOI2009 猜数字 HDU 1573 X问题 中国剩余定理CRT 中国剩余定理是用来求线性同于方程组的. \[ \begin{aligned ...

  2. 孙子算经余数C语言,行测数量关系备考:探索《孙子算经》之剩余定理

    深圳公务员考试网:行测数量关系备考:探索<孙子算经>之剩余定理.市考期间,深圳中公教育将准备各类备考活动,如笔试峰会.模考大赛.免费公开课等,请大家留意关注,踊跃参与,更多2020深圳公务 ...

  3. CF338D GCD Table(拓展中国剩余定理,细节处理,2900分)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 CF338D GCD Table(拓展中国剩余定理,细节处理,2900分) Problem 有一张 n ...

  4. 初等数论--同余方程--同余方程组:中国剩余定理

    初等数论--同余方程--同余方程组:中国剩余定理 博主是初学初等数论(整除+同余+原根),本意是想整理一些较难理解的定理.算法,加深记忆也方便日后查找:如果有错,欢迎指正. 我整理成一个系列:初等数论 ...

  5. 为什么剩余数不能相加_行测备考:如何快解数量关系中的剩余定理

    目前,很多考生已经在准备公务员考试了,行测试卷必然会考察关于数量关系的题目,而在数量关系的题目当中有一类题目出现的也比较多,虽然简单但是不能掌握做题的技巧的话也是比较浪费时间,这种题目就是剩余定理.什 ...

  6. 数论一之定理证明——裴蜀/威尔逊/费马/扩展欧几里得/[扩展]欧拉/[扩展]中国剩余定理,欧拉函数,逆元,剩余系,筛法

    打死没想到会在H老师处学懂数论 同余,整除 模运算 埃式筛法 欧拉筛法 最大公约数和最小公倍数 辗转相除法 更相减损术 裴蜀定理 威尔逊定理 费马定理 同余等价类.剩余系.缩系 欧拉函数 欧拉定理 扩 ...

  7. 信奥中的数学:孙子定理 中国剩余定理

    孙子定理 中国剩余定理 孙子定理 中国剩余定理_Dreamer Thinker Doer-CSDN博客 中国剩余问题(简介+详解) 中国剩余问题(简介+详解)_dreamzuora的博客-CSDN博客 ...

  8. 数论 —— 线性同余方程组与中国剩余定理

    [线性同余方程组] 由若干个线性同余方程构成的线性方程组. 例如: 其解法最早由我国<孙子算经>给出,因此解法称为"孙子定理",又叫"中国剩余定理" ...

  9. 通常情况下的中国剩余定理

    这几天学了学中国剩余定理....本来计划是一天学互质版一天学非互质版的,结果非互质版就学了好长时间...不过好在会证明了,考场上大力推一波应该是没问题的吧... 中国剩余定理是求形如x≡a1(mod ...

  10. poj 1006 java_POJ 1006 Java:中国剩余定理

    题目描述: 人生来就有三个生理周期,分别为体力.感情和智力周期,它们的周期长度为23天.28天和33天.每一个周期中有一天是高峰.在高峰这天,人会在相应的方面表现出色.例如,智力周期的高峰,人会思维敏 ...

最新文章

  1. 提高你开发效率的十五个Visual Studio 2010使用技巧
  2. 老李推荐: 第8章4节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-启动AndroidDebugBridge 2...
  3. C#利用Socket实现客户端之间直接通信
  4. mysql gtid 主键冲突_数据库开启gtid时,需要注意的问题
  5. java txt 修改_java创建TXT文件并进行读、写、修改操作
  6. 方舟生存 服务器修改器,【修改贴】关于单机版gg修改器的应用。
  7. 【2015-18年腾讯招聘】腾讯产品策划类笔试面试题整理
  8. 计算机图形学入门(十二)-阴影映射Shadow mapping(为光线追踪准备)
  9. chrome源码国内下载
  10. 杭州电子科技大学计算机科学与技术专业排名,杭州电子科技大学计算机科学与技术研究生专业排名...
  11. PIC反汇编流程(详解)
  12. 草履虫纳米机器人_《Nature》草履虫大小的微型机器人:由激光驱动可用于显微外科...
  13. UA OPTI544 量子光学1 Maxwell方程与Lorentz Oscillator回顾
  14. TCHAR * 转为char *   和 char  * 转为 TCHAR *
  15. 计算机机房坏境设施演练,计算机机房环境设施应急演练方案.doc
  16. mysql校园购物系统_校园网上购物系统的设计与实现(SSH,MySQL)
  17. 计算机知识音频转换,电脑小常识:笔杆子怎么录音转文字
  18. u盘启动盘安装win11系统
  19. Vmware tools 安装好后还是无法全屏问题
  20. OrbitControls缩放阻尼作用

热门文章

  1. 【圣诞快乐】用 C 语言画出一棵带有装饰的简易圣诞树
  2. CSS中的长度单位和HTML5中多媒体标签的使用
  3. 2021最火爆带字微信朋友圈背景
  4. 【排队助手】投屏模式-使用指南
  5. Flink DataStream时间水印机制
  6. 大数据分析的思维方式有哪些
  7. Seventh5: YAML syntax Ansible Playbook Ansible variables summaries and QQS | Cloud computing
  8. 虚拟摄像头之三: 重构android8.1 的 v4l2_camera_HAL 支持虚拟摄像头
  9. HTTP解析库http-parser简介及使用
  10. 【正则】包含大写小写字母数字的8到16位的密码正则