这道题大致题意是给定\(n\)个十进制整数和一个进制数\(k\),可以用无数多个给定的十进制整数,问这些十进制整数的和在模k意义下有多少种不同的结果(\(k\)进制下整数的最后一位就是这个数模\(k\)的余数)。

这明显是个数学题(但是不会做又有什么办法[逃]),既然是求模k意义下的可能结果,我们可以让所有数对k取模,这样可以得到末位数字。但是对于蒟蒻来说这有什么用呢(反正本蒟蒻取模之后也还是看不出来)。其实这道题并不是要取模,也不是要用进制,而是在十进制下求最大公约数(下面详细解释)。

众所周知有一道(毒瘤)题叫做小凯的疑惑,这道题的结论是对于互质的两个数\(a\)和\(b\),所有大于\(a \times b-a-b\)的数都可以用若干个\(a,b\)相加得到(别问我为什么看见这题想到了这个结论)\(\color{#FFF}{因为它太毒瘤啦qwq}\)。

看到这里蒟蒻一定会问,为什么这道题会和最大公约数有关呢?因为\(exgcd\)告诉我们二元一次方程\(ax+by=c\)在\(c\neq 0\ \ (mod \ \ gcd(x,y))\)时无整数解,这个非常简单,因为\(x=y= 0\ \ (mod \ \ gcd(x,y))\),所以\(c=0 \times a+0 \times b=0(mod\ \ gcd(x,y))\),那么设给定的\(n\)个数的最大公约数\(gcd({a_1},{a_2}, \cdots,{a_n} )=g\),则用给定的\(n\)个数的任意和都是\(g\)的倍数。既然所有\(g\)的倍数都可以构造,那么在模\(k\)意义下有多少个不同的数呢?此时就有一个二元一次方程\(ag=bk+r(0 \leq r <k)\),答案个数也即\(r\)的可能取值个数,变形可得\(ag-bk=r\),由\(exgcd\)得,当且仅当\(r = 0(mod\ gcd(g,k))\)时,方程有整数解。至此我们可以得到,对于任意的\(ans \in [0,k)\)满足\(ans \equiv 0 (mod\ gcd({a_1},{a_2},\cdots ,{a_n},k))\)都可以由若干个\({a_1},{a_2},\cdots,{a_n}\)相加得到(在模\(k\)意义下)。

以上是本题的思路叙述,下面放上\(AC\)代码\(\downarrow \downarrow \downarrow\)

#include<cstdio>//CF1010C
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<string>
#include<cmath>
#include<algorithm>
#define N 100010 using namespace std; int n,k,a[N],gg,ans; int gcd(int a,int b){
if(b==0){
return a;
}
return gcd(b,a%b);
} int main(){
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
gg=a[1];
for(int i=2;i<=n;i++){
if(gg==1){
break;
}
if(a[i]>gg){
gg=gcd(a[i],gg);
}
else{
gg=gcd(gg,a[i]);
}
}
if(gg>k){
gg=gcd(gg,k);
}
else{
gg=gcd(k,gg);
}
ans=k/gg;
printf("%d\n",ans);
for(int i=0;i<ans;i++){
printf("%d ",i*gg);
}
return 0;
}

\(p.s.\)有一点小的细节,就是在\(gcd\)已经等于$ 1 $的时候跳出循环,这样能跑的更快一点(其实也快不到哪里去...本来跑的就不慢[逃])

Codeforces | CF1010C 【Border】的更多相关文章

  1. CodeForces 382C【模拟】

    活生生打成了大模拟... #include <bits/stdc++.h> using namespace std; typedef long long LL; typedef unsig ...

  2. Codeforces 479【E】div3

    题目链接:http://codeforces.com/problemset/problem/977/E 题意:就是给你相连边,让你求图内有几个环. 题解:我图论很差,一般都不太会做图论的题.QAQ看官 ...

  3. Codeforces 479【F】div3

    题目链接:http://codeforces.com/problemset/problem/977/F 题意:给你一串数字序列,让你求最长上升子序列,但是这个子序列呢,它的数字得逐渐连续挨着. 题解: ...

  4. Codeforces 479【D】div3

    题目链接:http://codeforces.com/problemset/problem/977/D 题意:给你一个数字序列,定了一个游戏规则.你可以对当前数字进行两个操作 1./ 3  如果这个数 ...

  5. Codeforces 479【C】div3

    题目链接:http://codeforces.com/problemset/problem/977/C 题意:给你n个数字,输出任意一个数字,这个数字刚好大于等于,序列里面k个数字. 题解:排个序,第 ...

  6. Codeforces 479【B】div3

    题目链接: http://codeforces.com/problemset/problem/977/B 题意:字符串,找固定长度为2的重复子串出现次数最多的. 题解:我暴力做的.暴力出奇迹. #in ...

  7. Codeforces 479【A】div3试个水

    题目链接:http://codeforces.com/problemset/problem/977/A 题意:这个题,题目就是让你根据他的规律玩嘛.末尾是0就除10,不是就-1. 题解:题解即题意. ...

  8. Codeforces | CF1033D 【Divisors】

    题目大意:给定\(n(1\leq n\leq500)\)个数\(a_1,a_2\cdots,a_n(1\leq a_i\leq2\cdot10^{18})\),每个数有\(3\sim5\)个因数,求\ ...

  9. Codeforces | CF1028C 【Rectangles】

    (这道题太简单啦...虽说我锤了一上午都没过...我能说这道题和\(CF1029C\)算是同一道题吗...) 按照时间顺序来说...\(CF1029\)在\(CF1028\)前面(而且\(CF1029 ...

随机推荐

  1. python安装与使用(Windows)

    日常使用PHP开发较多,但是有些地方PHP的语言的瓶颈就显露出来了,例如,同样是抓取一个网站的内容,使用PHP需要较为复杂的正则匹配,效率较为低下.python具有丰富的类库,拿过来直接可以使用,功能 ...

  2. C#设计模式之9:模板方法

    模板方法 模板方法是一个方法,定义了算法的步骤,并允许子类为一个或多个步骤提供实现. 本例中用冲泡咖啡和茶的例子来说明: 上图说明了冲泡咖啡和茶的步骤,可以看出冲泡咖啡和茶的步骤差不多,很相似,先来看 ...

  3. [转帖]web安全:QQ号快速登录漏洞及被盗原理

    web安全:QQ号快速登录漏洞及被盗原理 https://www.cnblogs.com/1996V/p/7481823.html 看了下 QQ的确监听 端口 大神牛B 自己这一块一直没深入学习过.. ...

  4. 【学亮开讲】Oracle内外连接查询20181119

    --内连接查询 --需求:查询显示业主编号.业主名称.业主类型名称 select os.id 业主编号,os.name 业主名称,ot.name 业主类型名称 from t_owners os,t_o ...

  5. MyBaits全局配置文件的各项标签1

    ■dtd约束     <!DOCTYPE configuration           PUBLIC "-//mybatis.org//DTD Config 3.0//EN" ...

  6. Artifact project04:war :Error during artifact deployment. See server log for details

    困扰了我好长时间,我的错误是 先 Run clean  再package就成功了.

  7. Http请求笔记

    1 HTTP请求报文组成: 请求行:请求方法 url 协议版本 请求头:报文头-属性名:属性值 Accept属性告诉服务端-客户端接受什么类型的响应,可为一个或多个mime类型值 Cookie:服务端 ...

  8. Lambda表达式Contains方法(等价于SQL语句中的like)使用注意事项

    貌似已经半年多没写一篇帖子了,充分的说明要么老总一天折腾的让人心齐疲惫,没心情去写:要么另外一种可能就是自己不思进取,说白了就是懒.好在这种状态在今天被打破了.MoNey加油. 众所周知,想在Enti ...

  9. solrcloud编辑zookeeper上的配置文件的方法

    solrcloud的配置文件是上传在zookeeper文件系统上的.这样就面临一个问题,每次需要修改配置文件,就没有只有之前本地单机solr那么简单,需要上传. 搭建solrcloud时候提交配置文件 ...

  10. codeforces431C

    k-Tree CodeForces - 431C Quite recently a creative student Lesha had a lecture on trees. After the l ...