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

Solution

即 \(n=a_i \ mod \ b_i\)

裸CRT

但是我很懒所以用了 EXCRT 的板子

(然后发现板子的 Note 又写错了)

#include <bits/stdc++.h>
using namespace std; #define int long long
namespace excrt {
const int maxn=100010;
int n;
int ai[maxn],bi[maxn]; //x=b%a
int mul(int a,int b,int mod){
int res=0;
while(b>0){
if(b&1) res=(res+a)%mod;
a=(a+a)%mod;
b>>=1;
}
return res;
}
int exgcd(int a,int b,int &x,int &y){
if(b==0){x=1;y=0;return a;}
int gcd=exgcd(b,a%b,x,y);
int tp=x;
x=y; y=tp-a/b*y;
return gcd;
}
int solve(){
int x,y,k;
int M=bi[1],ans=ai[1];
for(int i=2;i<=n;i++){
int a=M,b=bi[i],c=(ai[i]-ans%b+b)%b;
int gcd=exgcd(a,b,x,y),bg=b/gcd;
if(c%gcd!=0) return -1;
x=mul(x,c/gcd,bg);
ans+=x*M;
M*=bg;
ans=(ans%M+M)%M;
}
return (ans%M+M)%M;
}
} const int N = 15;
int a[N],b[N],n; signed main() {
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++) cin>>b[i];
for(int i=1;i<=n;i++) a[i]=(a[i]%b[i]+b[i])%b[i];
for(int i=1;i<=n;i++) excrt::ai[i]=a[i];
for(int i=1;i<=n;i++) excrt::bi[i]=b[i];
excrt::n=n;
cout<<excrt::solve();
}

最新文章

  1. 【续集】塞翁失马,焉知非福:由 Styles.Render 所引发 runAllManagedModulesForAllRequests=&quot;true&quot; 的思考
  2. GZIP压缩优化
  3. 利用微软AntiXss Library过滤输出字符,防止XSS攻击
  4. DOM学习笔记(思维导图)
  5. 多实例MySQL批量添加用户和密码并授权
  6. [iOS基础控件 - 2] 按钮的基本使用
  7. login-登录
  8. android ListView和GridView拖拽移位具体实现及拓展
  9. Hash Map (Hash Table)
  10. Longest Valid Parentheses 解答
  11. MYSQL定时创建表分区
  12. GO对象和指针初始化
  13. HDU2602(背包)
  14. 小兔的棋盘(hdu2067)
  15. asp.net调用前台js调用后台代码分享
  16. python 全栈开发,Day122(人工智能初识,百度AI)
  17. vim自动保存折叠
  18. redis常用命令记录
  19. vSphere通过Client创建Centos7主机
  20. FileAlreadyExistsException: Output directory hdfs://ubuntu:9000/output09 already exists

热门文章

  1. 使用C#的计时器加观察者模式完成报警推送需求
  2. SAP VL10B 报错 - 4500000317 000010 交付 $ 1 的交付项目 000010 与 POD 无关-
  3. linux 命令行下设置代理
  4. ELK学习003:Elasticsearch启动常见问题
  5. Java虚拟机——JVM
  6. C#连接数据库的方法
  7. 【DTOJ】1001:长方形周长和面积
  8. SpringBoot整合NoSql--(一)Redis
  9. jQuery---钢琴案例 (按下1-9数字键,能触发对应的mouseenter事件)
  10. Bash脚本编程学习笔记05:用户交互与脚本调试