exgcd&&中国剩余定理专题练习
hdu1573求中国剩余定理解的个数
#include <iostream>
#include <cstdio> using namespace std;
int a[100],b[100];
int exgcd(int a,int b,int &x,int &y){
if(b==0){
x=1;y=0;return a;
}
int d=exgcd(b,a%b,x,y),t;
t=x;x=y;y=t-a/b*y;
return d;
}
int main(){
int T;scanf("%d",&T);
while(T--){
int n,m;scanf("%d%d",&n,&m);
for(int i=0;i<m;++i) scanf("%d",a+i);
for(int i=0;i<m;++i) scanf("%d",b+i);
int a1=a[0],r1=b[0],flag=0;
for(int i=1;i<m;++i){
int a2=a[i],r2=b[i];
int d=r2-r1,x,y,GCD=exgcd(a1,a2,x,y);
if(d%GCD){
flag=1;break;
}
x*=d/GCD;int mod=a2/GCD;
x=(x%mod+mod)%mod;
r1=x*a1+r1;
a1=a1*a2/GCD;
}
if(r1>n||flag) printf("0\n");
else printf("%d\n",(n-r1)/a1+1-(r1==0?1:0));//没考虑r1==0的情况
}
}
poj1061 列同余方程,exgcd解方程
#include <iostream>
#include <cstdio> using namespace std;
typedef long long ll;
ll exgcd(ll a,ll b,ll &x,ll &y){
if(b==0){
x=1;y=0;return a;
}
ll d=exgcd(b,a%b,x,y),t;
t=x;x=y;y=t-a/b*y;
return d;
}
int main(){
ll x,y,m,n,L;
while(~scanf("%I64d%I64d%I64d%I64d%I64d",&x,&y,&m,&n,&L)){
ll rx,ry,GCD,D=((y-x)%L+L)%L,A=((m-n)%L+L)%L;
GCD=exgcd(A,L,rx,ry);
if(D%GCD) {
printf("Impossible\n");continue;
}
ll mod=L/GCD;rx*=D/GCD;
rx=(rx%mod+mod)%mod;
printf("%I64d\n",rx);
}
return 0;
}
poj2115 不互质情况下又需要求类似逆元的东西
#include <iostream>
#include <cstdio> using namespace std;
typedef long long ll;
ll A,B,C,k;
ll exgcd(ll a,ll b,ll &x,ll &y){
if(b==0) {
x=1;y=0;return a;
}
ll d=exgcd(b,a%b,x,y),t;
t=x;x=y;y=t-a/b*y;
return d;
}
int main(){
while(~scanf("%I64d%I64d%I64d%I64d",&A,&B,&C,&k)){
if(A+B+C+k==0) break;
ll n=(1ll<<(k));
ll D=((B-A)%n+n)%n,x,y,GCD;
GCD=exgcd(C,n,x,y);
if(D%GCD){
printf("FOREVER\n");continue;
}
ll mod=n/GCD;x*=D/GCD;
x=(x%mod+mod)%mod;
printf("%I64d\n",x);
}
return 0;
}
poj2891 一元线性方程组-不互质的中国剩余定理
#include <iostream>
#include <cstdio> using namespace std;
typedef long long ll;
ll gcd(ll a,ll b){
return b==0?a:gcd(b,a%b);
}
ll exgcd(ll a,ll b,ll &x,ll &y){
if(b==0){
x=1;y=0;return a;
}
ll d=exgcd(b,a%b,x,y),t;
t=x;x=y;y=t-a/b*y;
return d;
}
int main(){
ll k;
while(~scanf("%I64d",&k)){
ll a1,r1,a2,r2,ans;scanf("%I64d%I64d",&a1,&r1);
int flag=0;
for(int i=1;i<k;++i){
scanf("%I64d%I64d",&a2,&r2);
if(flag) continue;
ll d=r2-r1,x,y,GCD=gcd(a1,a2);
if(d%GCD) {
flag=1;continue;
}
ll A1=a1/GCD,A2=a2/GCD,D=d/GCD;
exgcd(A1,A2,x,y);
x*=D;x=(x%A2+A2)%A2;
r1=x*a1+r1;
a1=a1*a2/GCD;
}
if(flag) printf("-1\n");
else printf("%I64d\n",r1);
}
return 0;
}
poj 1006 高峰期出现的同一天,中国剩余定理
#include <iostream>
#include <cstdio> using namespace std;
int p,e,i,d;
int exgcd(int a,int b,int &x,int &y){
if(b==0){
x=1;y=0;return a;
}
int d=exgcd(b,a%b,x,y),t;
t=x;x=y;y=t-a/b*y;
return d;
}
int main(){
int cas=0;
while(~scanf("%d%d%d%d",&p,&e,&i,&d)){
if(p+e+i+d==-4) break;
int N=23*28*33,K,x,y,ans=0;
exgcd(23,K=N/23,x,y);y=(y%23+23)%23;
ans=(ans+K*y*(p-d))%N;
exgcd(28,K=N/28,x,y);y=(y%28+28)%28;
ans=(ans+K*y*(e-d))%N;
exgcd(33,K=N/33,x,y);y=(y%33+33)%33;
ans=(ans+K*y*(i-d))%N;
if(ans<=0) ans+=N;
printf("Case %d: the next triple peak occurs in %d days.\n",++cas,ans);
}
return 0;
}
poj2142 对exgcd得出的|s|+|t|最小的解,求s>0时t为多少,t>0时s为多少,两个方向求一下最小正整数解
#include <iostream>
#include <cstdio> using namespace std;
int a,b,d;
int gcd(int a,int b){
return b==0?a:gcd(b,a%b);
}
int exgcd(int a,int b,int &x,int &y){
if(b==0){x=1;y=0;return a;}
int d=exgcd(b,a%b,x,y),t;
t=x;x=y;y=t-a/b*y;
return d;
}
int main(){
while(~scanf("%d%d%d",&a,&b,&d)){
if(a+b+d==0) break;
int GCD=gcd(a,b);
a/=GCD,b/=GCD,d/=GCD;
int x,y;exgcd(a,b,x,y);
int x1,y1,x2,y2;
x1=x*d;
x1=(x1%b+b)%b;y1=(d-a*x1)/b;if(y1<0) y1=-y1;
y2=y*d;
y2=(y2%a+a)%a;x2=(d-b*y2)/a;if(x2<0) x2=-x2;
if(x1+y1>x2+y2) {
x1=x2;y1=y2;
}
printf("%d %d\n",x1,y1);
}
return 0;
}
exgcd&&中国剩余定理专题练习的更多相关文章
- POJ 2891 Strange Way to Express Integers 中国剩余定理 数论 exgcd
http://poj.org/problem?id=2891 题意就是孙子算经里那个定理的基础描述不过换了数字和约束条件的个数…… https://blog.csdn.net/HownoneHe/ar ...
- 欧几里得(辗转相除gcd)、扩欧(exgcd)、中国剩余定理(crt)、扩展中国剩余定理(excrt)简要介绍
1.欧几里得算法(辗转相除法) 直接上gcd和lcm代码. int gcd(int x,int y){ ?x:gcd(y,x%y); } int lcm(int x,int y){ return x* ...
- 中国剩余定理及其拓展 CRT&EXGCD
中国剩余定理,又叫孙子定理. 作为一个梗广为流传.其实它的学名叫中国单身狗定理. 中国剩余定理 中国剩余定理是来干什么用的呢? 其实就是用来解同余方程组的.那么什么又是同余方程组呢. 顾名思义就是n个 ...
- BZOJ2219数论之神——BSGS+中国剩余定理+原根与指标+欧拉定理+exgcd
题目描述 在ACM_DIY群中,有一位叫做“傻崽”的同学由于在数论方面造诣很高,被称为数轮之神!对于任何数论问题,他都能瞬间秒杀!一天他在群里面问了一个神题: 对于给定的3个非负整数 A,B,K 求出 ...
- 清北学堂-DAY2-数论专题-中国剩余定理(CRT)
首先请看定义:(百科上抄下来的)孙子定理是中国古代求解一次同余式组(见同余)的方法.是数论中一个重要定理.又称中国余数定理. 一元线性同余方程组问题最早可见于中国南北朝时期(公元5世纪)的数学著作&l ...
- 逆元 exgcd 费马小定理 中国剩余定理的理解和证明
一.除法取模逆元 如果我们要通过一个前面取过模的式子递推出其他要取模的式子,而递推式里又存在除法 那么一个很尴尬的事情出现了,假如a[i-1]=100%31=7 a[i]=(a[i-1]/2)%31 ...
- 51nod1079(中国剩余定理)
题目链接: http://www.51nod.com/onlineJudge/user.html#!userId=21687 题意: 中文题诶~ 思路: 本题就是个中国剩余定理模板题,不过模拟也可以过 ...
- HDU 5446 中国剩余定理+lucas
Unknown Treasure Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Other ...
- POJ 1006 - Biorhythms (中国剩余定理)
B - Biorhythms Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Subm ...
随机推荐
- ovs-fields
1. 字段匹配 精确匹配 field=value,如,nw_src=10.1.2.3. 按位匹配 field=value/mask,如,nw_src=10.1.0.0/255.255.0.0,nw_s ...
- 当Vue可视化工具创建不了项目时的解决办法!
当Vue可视化工具创建不了项目时的解决办法! 当你尝试用可视化工具创建一个Vue的项目的时候,报错, 出现什么indexOf什么什么的错误! 我的解决办法是把可视化工具删除掉,重新下载! 如果你是 n ...
- Lua大量字符串拼接方式效率对比及原因分析
Lua大量字符串拼接方式效率对比及原因分析_AaronChan的博客-CSDN博客_lua字符串拼接消耗 https://blog.csdn.net/qq_26958473/article/detai ...
- 406 UDP协议是面向非连接的协议 Keep-Alive
HTTP The Definitive Guide Table 3-1. Common HTTP methods Method Description Message body? GET ...
- Linux常用命令:文件操作命令
Linux系统命令主要包括文件操作.网络命令和性能命令,本文介绍常用文件操作命令. 修改文件属性 文件类型: 普通文件:- 目录文件:d 块设备文件:b,硬盘 字符设备: c,串行端口的接口设备,例如 ...
- 小麦苗数据库巡检脚本,支持Oracle、MySQL、SQL Server和PG等数据库
目录 一.巡检脚本简介 二.巡检脚本特点 三.巡检结果展示 1.Oracle数据库 2.MySQL数据库 3.SQL Server数据库 4.PG数据库 5.OS信息 四.脚本运行方式 1.Oracl ...
- 存储型XSS
DVWA系列(二)存储型XSS https://www.imooc.com/article/284686 网络安全:存储型XSS https://blog.csdn.net/qq_41500251/a ...
- Node 使用webpack编写简单的前端应用
编写目的 1. 使用 Node 依赖webpack.jQuery编写简单的前端应用. 操作步骤 (1)新建一个目录 $ mkdir simple-app-demo $ cd simple-app-de ...
- spark-submit提交spark任务的具体参数配置说明
spark-submit提交spark任务的具体参数配置说明 1.spark提交任务常见的两种模式 2.提交任务时的几个重要参数 3.参数说明 3.1 executor_cores*num_execu ...
- 环境变量jdk版本与java -version显示不一致
问题描述: 问题产生原因: 1.Path环境变量配置了Oracle 2.C:\windows\System32下,还有java.exe. 问题描述: 今天遇到一个小bug,我电脑环境变量配置的版本是j ...