Description

给定$p_1,p_2,…,p_n,b_1,b_2,...,b_m$,

求满足$x\;mod\;p_1\;\equiv\;a_1,x\;mod\;p_2\;\equiv\;a_2,...,x\;mod\;p_n\;\equiv\;a_n$的$x$对$b_1,b_2,...,b_m$取模的结果.

Input

第一行两个整数$n,m$.

接下来$n$行,每行有一个整数$a_i$.

接下来$m$行,每行有一个整数$b_i$.

Output

$m$行,每行一个整数,表示$x\;\mod\;b_i$的结果.

Sample Input

4 3

1

2

3

2

11

23

100

Sample Output

1

0

23

HINT

$m=100,0<b_i<10^9,b_i$为随机生成的,$p_i$为第$i$小的质数.

Solution

中国剩余定理+高精度???

这题只需记录$mod\;b_i$结果.

$ans.b[i]$表示$mod\;b_i$的结果,$mul.p[i]$表示目前$p_i$寻找答案中每次加上的数,$ans.p[i],mul.b[i]$同理.

对于$i\;\in\;[1,n]$,每次暴力$+mul.p[i]$直到$ans.p[i]=a_i$,然后将每个$mul.p[\;]\;\;\times\;p[i]$(保证后面无论怎么操作,$ans.p[i]\;\equiv\;a_i(mod\;p_i)$.

($ans.b[\;],mul.b[\;]$同步进行以上$"+","\times"$操作.)

#include<cmath>
#include<ctime>
#include<stack>
#include<queue>
#include<cstdio>
#include<vector>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define N 305
#define M 2000
using namespace std;
typedef long long ll;
struct mod{
int p[N];ll b[N];
}ans,mul;
ll b[N];
int a[N],p[N],n,m,cnt;
bool u[M],flag;
inline void prime(){
for(int i=2;cnt<n;++i){
if(!u[i]) p[++cnt]=i;
for(int j=1;j<=cnt&&p[j]*i<M;++j){
u[p[j]*i]=true;
if(!(i%p[j])) break;
}
}
}
inline void init(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;++i){
scanf("%d",&a[i]);
if(a[i]) flag=true;
}
for(int i=1;i<=m;++i)
scanf("%lld",&b[i]);
prime();
if(!flag){
for(int i=1;i<=m;++i){
ans.b[i]=1LL%b[i];
for(int j=1;j<=n;++j)
ans.b[i]=ans.b[i]*(ll)(p[j])%b[i];
}
for(int i=1;i<=m;++i)
printf("%lld\n",ans.b[i]);
return;
}
for(int i=1;i<=n;++i)
mul.p[i]=1%p[i];
for(int i=1;i<=m;++i)
mul.b[i]=1LL%b[i];
for(int i=1;i<=n;++i){
while(ans.p[i]!=a[i]){
for(int j=1;j<=n;++j)
ans.p[j]=(ans.p[j]+mul.p[j])%p[j];
for(int j=1;j<=m;++j)
ans.b[j]=(ans.b[j]+mul.b[j])%b[j];
}
for(int j=1;j<=n;++j)
mul.p[j]=mul.p[j]*p[i]%p[j];
for(int j=1;j<=m;++j)
mul.b[j]=mul.b[j]*(ll)(p[i])%b[j];
}
for(int i=1;i<=m;++i)
printf("%lld\n",ans.b[i]);
}
int main(){
freopen("mod.in","r",stdin);
freopen("mod.out","w",stdout);
init();
fclose(stdin);
fclose(stdout);
return 0;
}

[日常训练]mod的更多相关文章

  1. 「日常训练」ZgukistringZ(Codeforces Round #307 Div. 2 B)

    题意与分析(CodeForces 551B) 这他妈哪里是日常训练,这是日常弟中弟. 题意是这样的,给出一个字符串A,再给出两个字符串B,C,求A中任意量字符交换后(不限制次数)能够得到的使B,C作为 ...

  2. [日常训练]yayamao的神题

    Description $yayamao$是数学神犇,一天他在纸上计算起了$1/P$, 我们知道按照模拟除法可以得到准确解,例如$1/7=0.(142857),1/10=0.1(0)$.$yayama ...

  3. [日常训练]常州集训day8

    T1 Description 给定一个长度为$n$的正整数序列$a$.可以将序列分成若干段,定义第$i$段的权值$x_i$为这一段中所有数的最大值,特殊地,$x_0=0$.求$\sum_{i=1}^{ ...

  4. [日常训练]常州集训day5

    T1 Description 小$W$和小$M$一起玩拼图游戏啦~ 小$M$给小$M$一张$N$个点的图,有$M$条可选无向边,每条边有一个甜蜜值,小$W$要选$K$条边,使得任意两点间最多有一条路径 ...

  5. [日常训练]常州集训day3

    T1 Description 有$K$个石子,石子只能放在$N$条水平线与$M$条竖直线构成的网格的交点上. 求用$K$个石子最多能找到多少四边平行于坐标轴的长方形,它的四个角上都恰好放着一枚石子. ...

  6. 【日常训练】Help Far Away Kingdom(Codeforces 99A)

    题意与分析 题意很简单,但是注意到小数可能有一千位,作为一周java选手的我选择了java解决. 这里的分析会归纳一些必要的Java API:(待补) 代码 /* * ACM Code => c ...

  7. 「日常训练」 Fire!(UVA-11624)

    与其说是训练不如说是重温.重新写了Java版本的代码. import java.util.*; import java.math.*; import java.io.BufferedInputStre ...

  8. 「日常训练」COMMON 约数研究(HYSBZ-1968)

    题意与分析 感谢https://www.cnblogs.com/Leohh/p/7512960.html的题解.这题话说原来不在我的训练范围,正好有个同学问我,我就拿来做做.数学果然不是我擅长的啊,这 ...

  9. 2017-2018 ACM-ICPC Northern Eurasia (Northeastern European Regional) Contest (NEERC 17) 日常训练

    A - Archery Tournament 题目大意:按时间顺序出现靶子和射击一个位置,靶子的圆心为(x, y)半径为r,即圆与x轴相切,靶子不会重叠,靶子被击中后消失, 每次射击找出哪个靶子被射中 ...

随机推荐

  1. Discuz! X2.5判断会员登录状态及外部调用注册登录框

    Discuz! X2.5判断会员登录状态及外部调用注册登录框 有关discuz论坛会员信息,收集的一些资料: 用dedecms+discuz做了个门户加论坛形式的网站,但是dedecms顶部目前只能q ...

  2. spring 3.2.x + struts2 + mybatis 3.x + logback 整合配置

    与前面的一篇mybatis 3.2.7 与 spring mvc 3.x.logback整合 相比,只是web层的MVC前端框架,从spring mvc转换成struts 2.x系列,变化并不大 一. ...

  3. 从源码角度看finish()方法的执行流程

    1. finish()方法概览 首先我们来看一下finish方法的无参版本的定义: /** * Call this when your activity is done and should be c ...

  4. swagger editor使用

    swagger editor使用 swagger是一套开源的API设计工具,包括Swagger UI,Swagger Editor等. Swagger Editor 其中Swagger Editor是 ...

  5. JavaScript学习笔记- 正则表达式常用字符集及方法

    正则表达式修饰符(修饰符 可以在全局搜索中不区分大小写) i(ignoreCase)执行对大小写不敏感的匹配 g (global)     执行全局匹配(查找所有匹配而非在找到第一个匹配后停止) m( ...

  6. Webservice学习

    参考博客1: http://www.cnblogs.com/lzhp/archive/2013/01/13/2858559.html 参考博客2:http://blog.csdn.net/shilei ...

  7. ElasticSearch入门系列(五)数据

    序言:无论程序如何写,最终都是为了组织数据为我们服务.在实际应用中,并不是所有相同类型的实体的看起来都是一样的.传统上我们使用行和列将数据存储在关系型数据库中相当于使用电子表格,这种固定的存储方式导致 ...

  8. jax-ws开发总结

    服务端开发步骤: 1.定义SEI,即java中的接口 2.定义SEI的实现类,使用@webservice注解标记它是一个webservice服务类 3.发布服务 客户端开发步骤:使用jdk的servi ...

  9. Retrofit2 + OkHttp3设置Http请求头(Headers)方法汇总

    在构建网络层时会遇到一个问题就是要手动配置Http请求的Headers,写入缓存Cookie,自定义的User-Agent等参数,但是对于有几十个接口的网络层,我才不想用注解配置Headers,目前网 ...

  10. Swift开发小技巧--TabBar中间按钮的添加方案

    TabBar中间按钮的添加方案 之前做百思项目的时候,也有一个中间按钮,当时是重写的TabBar,这里介绍一个新的方法 给TabbarVC多添加添加一个控制器,这个控制器的作用仅仅是用来占位的,多了这 ...