description

现有两组数字,每组k个,第一组中的数字分别为:a1,a2,...,ak表示,第二组中的数字分别用b1,b2,...,bk表示。其中第二组中的数字是两两互素的。求最小的非负整数n,满足对于任意的i,n - ai能被bi整除。


analysis

  • 根据题意可以知道

\[ \left\{
\begin{aligned}
n-a_1≡0(\mod b_1)\\
n-a_2≡0(\mod b_2)\\
......\\
n-a_k≡0(\mod b_k)
\end{aligned}
\right.
\]

  • 对于\(a-b≡0(\mod c)\),如果\(c|a-b\),那么\(a\mod c=b\)

  • 所以

\[ \left\{
\begin{aligned}
n≡a_1(\mod b_1)\\
n≡a_2(\mod b_2)\\
......\\
n≡a_k(\mod b_k)
\end{aligned}
\right.
\]

  • 随便用哪种\(CRT\)都可以,但注意普通\(CRT\)的乘法每处都要模

code

#pragma GCC optimize("O3")
#pragma G++ optimize("O3")
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define MAXN 100005
#define ll long long
#define reg register ll
#define fo(i,a,b) for (reg i=a;i<=b;++i)
#define fd(i,a,b) for (reg i=a;i>=b;--i) using namespace std; ll a[MAXN],m[MAXN];
ll n; inline ll read()
{
ll x=0,f=1;char ch=getchar();
while (ch<'0' || '9'<ch){if (ch=='-')f=-1;ch=getchar();}
while ('0'<=ch && ch<='9')x=x*10+ch-'0',ch=getchar();
return x*f;
}
inline ll exgcd(ll a,ll b,ll &x,ll &y)
{
if (b==0){x=1,y=0;return a;}
ll ans=exgcd(b,a%b,y,x);
y-=x*(a/b);return ans;
}
inline ll mul(ll x,ll y,ll mod)
{
return (x*y-(ll)((long double)x/mod*y)*mod+mod)%mod;
}
inline ll CRT(ll a[],ll m[],ll n)
{
ll M=1,x,y,ans=0;
fo(i,1,n)M*=m[i];
fo(i,1,n)
{
ll tmp=M/m[i];exgcd(tmp,m[i],x,y);
ans=(ans+mul(mul(a[i],x,M),tmp,M))%M;
}
return (ans%M+M)%M;
}
inline ll EXCRT(ll a[],ll m[],ll n)
{
ll M=m[1],x,y,ans=a[1];
fo(i,2,n)
{
ll gcd=exgcd(M,m[i],x,y),tmp=(a[i]-ans%m[i]+m[i])%m[i];
if (tmp%gcd!=0)return -1;
x=mul(x,tmp/gcd,m[i]/gcd);
ans+=x*M,M*=m[i]/gcd,ans=(ans%M+M)%M;
}
return (ans%M+M)%M;
}
int main()
{
n=read();
fo(i,1,n)a[i]=read();
fo(i,1,n)m[i]=read();
printf("%lld\n",CRT(a,m,n));
return 0;
}

【luoguP3868】猜数字的更多相关文章

  1. C语言猜数字游戏

    猜数字游戏,各式各样的实现方式,我这边提供一个实现方式,希望可以帮到新手. 老程序猿就不要看了,黑呵呵 源代码1 include stdio.h include stdlib.h include ti ...

  2. 不一样的猜数字游戏 — leetcode 375. Guess Number Higher or Lower II

    好久没切 leetcode 的题了,静下心来切了道,这道题比较有意思,和大家分享下. 我把它叫做 "不一样的猜数字游戏",我们先来看看传统的猜数字游戏,Guess Number H ...

  3. java 猜数字游戏

    作用:猜数字游戏.随机产生1个数字(1~10),大了.小了或者成功后给出提示. 语言:java 工具:eclipse 作者:潇洒鸿图 时间:2016.11.10 >>>>> ...

  4. 【原创Android游戏】--猜数字游戏Version 0.1

    想当年高中时经常和小伙伴在纸上或者黑板上或者学习机上玩猜数字的游戏,在当年那个手机等娱乐设备在我们那还不是很普遍的时候是很好的一个消遣的游戏,去年的时候便写了一个Android版的猜数字游戏,只是当时 ...

  5. 【原创Android游戏】--猜数字游戏V1.1 --数据存储,Intent,SimpleAdapter的学习与应用

    --------------------------------------------------------------- V0.1版本 上次做完第一个版本后,发现还有一些漏洞,并且还有一些可以添 ...

  6. python学习笔记 ——python写的猜数字游戏 002

    from sys import exit import random def Arrfor(str): #CONTST = CONTST + 1 artificial = input("请输 ...

  7. Python小游戏之猜数字

    最近师兄师姐毕业,各种酒席,酒席上最常玩的一个游戏就是猜数字,游戏规则如下: 出题人在手机上输入一个0-100之间的数字,其它人轮流猜这个数字,如果你不幸猜中则要罚酒一杯.每次猜数字,出题人都要缩小范 ...

  8. 【Qt】2.4 做一个“猜数字”的游戏

    使用对话框和Qt设计师来实现一个相当简单的小游戏.同时将通过这个程序来看布局的隐藏和显示是如何来影响窗口界面的变化的. 新建一个Qt项目,把Qt Creator默认给的mainwindow.h.mai ...

  9. hihocoder 1169 猜数字

    传送门 时间限制:10000ms 单点时限:5000ms 内存限制:256MB 描述 你正在和小冰玩一个猜数字的游戏.小冰首先生成一个长为N的整数序列A1, A2, …, AN.在每一轮游戏中,小冰会 ...

  10. python写的第一个简单小游戏-猜数字

    #Filename:game1.py guess=10 running=True while running: try: answer=int(raw_input('Guess what i thin ...

随机推荐

  1. 【牛客提高训练营2B】分糖果

    题目 发现自己一年之前非常垃圾 题目大意是给你一个\(n\)个点的环,给每个点一个\([1,a_i]\)的取值,并且满足环上任意相连两点权值不能相等,求方案数 考虑断环为链,发现不大会 不妨考虑所有\ ...

  2. 在vue中使用高德地图开发,以及AMap的引入?

    百度引入BMap ,一个import 即可,可AMap 却报AMap is not difined ? 1.首先在 externals: { "BMap": "BMap& ...

  3. webstorm/vs取消eslint

    vs ——preference ——setting,添加"eslint.enable": false webstorm ——setting ——language ——javascr ...

  4. 关于hadoop多次format之后,会出现的dataNode消失问题

    如标题,最近我由于想初始化以下hadoop集群,之后却发现启动集群后所有的DataNode都消失了. 问题查找: 由于时所有的DataNode都出了问题,于是我翻找了以下DataNode的日志(默认在 ...

  5. Codeigniter 列出所有控制器和控制器的方法(类似路由列表)

    我的思路是: 读取控制器文件夹下的所有 php 文件 获取父级的控制器的方法的不应该出现在每个控制器的路由中,所以需要排除父级控制器的方法 读取 控制器文件夹下的 php文件的类名和方法 下面的代碼是 ...

  6. delphi 获取本机IP地址和MAC地址 (转)

    unit NetFunc; interface uses SysUtils, Windows, dialogs, winsock, Classes, ComObj, WinInet, Variants ...

  7. thinkphp 动态配置

    之前的方式都是通过预先定义配置文件的方式,而在具体的操作方法里面,我们仍然可以对某些参数进行动态配置(或者增加新的配置),主要是指那些还没有被使用的参数. 设置新的值: C('参数名称','新的参数值 ...

  8. 关于对现阶段vue项目的一些总结和感想

    一.前言 现阶段手上vue的项目差不多快完了,空闲之余回反复对整个项目的代码结构.实现细节以及框架上的做了一些思考和优化.下面打算把想到的和重点实现的方法记录一下. 二.回顾 对于常规操作,这里不做过 ...

  9. 带你走进webpack世界,成为webpack头号玩家。

    最近朋友圈被<头号玩家>刷爆了,斯皮尔伯格一个资深电影导演,把对过去经典的致敬,对未来的憧憬浓缩在这一部电影中,可以说让观众燃了起来. 观望整个前端开发,不断的演化,发展迅速.前端开发从最 ...

  10. (转)Android 创建与解析XML—— Dom4j方式 .

    转:http://blog.csdn.net/ithomer/article/details/7521605 1.Dom4j概述 dom4j is an easy to use, open sourc ...