没想出来QAQ....QAQ....QAQ....

对于一般情况,我们知道 ax+by=gcd(a,b)ax+by=gcd(a,b)ax+by=gcd(a,b) 时方程是一定有解的。

如果改成 ax+by=cax+by=cax+by=c 的话该方程有解当且仅当 ccc % gcd(a,b)==0gcd(a,b)==0gcd(a,b)==0 。

这个结论在大于2个个未知数的时候也是成立的,即对于:

a1x1+a2x2+a3x3+......anxn=gcd(a1,a2,a3,...an)a_{1}x_{1}+a_{2}x_{2}+a_{3}x_{3}+......a_{n}x_{n}=gcd(a_{1},a_{2},a_{3}, ...a_{n})a1​x1​+a2​x2​+a3​x3​+......an​xn​=gcd(a1​,a2​,a3​,...an​) 是成立的。

在原题中,我们要求的是 a1x1+a2x2+a3x3+......anxn≡a_{1}x_{1}+a_{2}x_{2}+a_{3}x_{3}+......a_{n}x_{n}\equiva1​x1​+a2​x2​+a3​x3​+......an​xn​≡ m(modm(modm(mod k)k)k) 中 mmm 的解集。

那么我们就可以先将式子转化为 a1x1+a2x2+a3x3+......anxn−bk=ma_{1}x_{1}+a_{2}x_{2}+a_{3}x_{3}+......a_{n}x_{n}-bk=ma1​x1​+a2​x2​+a3​x3​+......an​xn​−bk=m。

根据扩展欧几里得定理,mmm 存在当且仅当 mmm 是 gcd(a1...an,k)gcd(a_{1}...a_{n},k)gcd(a1​...an​,k) 的整数倍,我们就现将 gcd(a1...an,k)gcd(a_{1}...a_{n},k)gcd(a1​...an​,k) 求出,并分别乘以 2,3,4...2,3,4...2,3,4... 结果大于等于 kkk 时停止即可。

Code:

#include<cstdio>
using namespace std;
inline int gcd(int a,int b) { return b == 0 ? a : gcd(b, a % b); }
int main()
{
int n,k;
scanf("%d%d",&n,&k);
int m = k;
for(int i = 1;i <= n; ++i)
{
int a; scanf("%d",&a);
m = gcd(m, a);
}
printf("%d\n",k / m);
int cnt = 0;
while(cnt < k)
{
printf("%d ",cnt);
cnt += m;
}
return 0;
}

AC Codeforces Round #499 (Div. 2) E. Border 扩展欧几里得的更多相关文章

  1. Codeforces Round #499 (Div. 1)部分题解(B,C,D)

    Codeforces Round #499 (Div. 1) 这场本来想和同学一起打\(\rm virtual\ contest\)的,结果有事耽搁了,之后又陆陆续续写了些,就综合起来发一篇题解. B ...

  2. Codeforces Round #499 (Div. 1)

    Codeforces Round #499 (Div. 1) https://codeforces.com/contest/1010 为啥我\(\rm Div.1\)能\(A4\)题还是\(\rm s ...

  3. Codeforces Round #499 (Div. 2)

    Codeforces Round #499 (Div. 2) https://codeforces.com/contest/1011 A #include <bits/stdc++.h> ...

  4. Codeforces Round #499 (Div. 1) F. Tree

    Codeforces Round #499 (Div. 1) F. Tree 题目链接 \(\rm CodeForces\):https://codeforces.com/contest/1010/p ...

  5. [codeforces 200 E Tractor College]枚举,扩展欧几里得,三分

    题目出自 Codeforces Round #126 (Div. 2) 的E. 题意大致如下:给定a,b,c,s,求三个非负整数x,y,z,满足0<=x<=y<=z,ax+by+cz ...

  6. 【Codeforces Round #499 (Div. 2) E】Border

    [链接] 我是链接,点我呀:) [题意] 给你n个数字,每个数字可以无限用,每种方案可以组成一个和,问你%k的结果有多少种不同的结果. [题解] 相当于给你一个方程 \(x_1*a_1+x_2*a_2 ...

  7. 7-27 Codeforces Round #499 (Div. 2)

    C. Fly 链接:http://codeforces.com/group/1EzrFFyOc0/contest/1011/problem/C 题型:binary search .math. 题意:总 ...

  8. Codeforces Round #499 (Div. 2) Problem-A-Stages(水题纠错)

    CF链接  http://codeforces.com/contest/1011/problem/A Natasha is going to fly to Mars. She needs to bui ...

  9. Codeforces Round #499 (Div. 2) D. Rocket题解

    题目: http://codeforces.com/contest/1011/problem/D This is an interactive problem. Natasha is going to ...

随机推荐

  1. hibernate详细配置

    映射配置 <!-- 映射文件: 映射一个实体类对象:  描述一个对象最终实现可以直接保存对象数据到数据库中.  --> <!-- package: 要映射的对象所在的包(可选,如果不 ...

  2. 反射API提供的常用类和函数

    ReflectionParameter 取回了函数或方法参数的相关信息. {//要自行检查函数的参数,首先创建一个 ReflectionFunction 或 ReflectionMethod 的 实例 ...

  3. MooFest 树状数组 + 前缀和

    比较友好的数据结构题 建议读者好好思考思考--. 可以分析出与前缀和的关系, 之后就愉快的套起树状数组辣 #include <cstdio> #include<queue> # ...

  4. Substring Uva 11468_记忆化搜索 + AC自动机

    Code: #include<cstdio> #include<cstring> #include<queue> using namespace std; cons ...

  5. pandaboy Merry Christmas

  6. sublime 自定义快捷生成代码块

    菜单栏目选 Tools(工具) =>Developer(插件开发)=>New Snippet....(新建代码片段),如图: 接着会新开一个标签页,会附带一些内容:如图: 将“Hello, ...

  7. [luogu4053 JSOI2007] 建筑抢修 (贪心 优先队列)

    传送门 题目描述 小刚在玩JSOI提供的一个称之为"建筑抢修"的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者.但是T部落的基地里已经有N个建筑设施受到了严重的损伤 ...

  8. 【codeforces 807D】Dynamic Problem Scoring

    [题目链接]:http://codeforces.com/contest/807/problem/D [题意] 给出n个人的比赛信息; 5道题 每道题,或是没被解决->用-1表示; 或者给出解题 ...

  9. java并发之阻塞队列

    在前面我们接触的队列都是非阻塞队列,比如PriorityQueue.LinkedList(LinkedList是双向链表,它实现了Dequeue接口). 阻塞队列与普通队列的区别在于:当队列是空的时, ...

  10. 机房工程-在线式、后备式UPS选择(转载)

    原文网址:http://oa.yesky.com/10/31061510all.shtml#p31061510 1后备式UPS还是在线式UPS? 作为机房设备的一项重要保护措施,UPS起着无可替代的作 ...