本文共 788 字,大约阅读时间需要 2 分钟。
思路: 注意一定要先排序,题目给的有序数列是特例。
然后第一个数就是最小的数,最后一个数就是最大的。 因为我们从 最小的前面补数没有任何的意义。 要让数列的项数最少,那么公差一定最大。即 各个数的差的最大公约数。#include#include #include #include using namespace std;int a[1000005];int gcd(int a,int b){ return b?gcd(b,a%b):a;}int main(void){ int n; cin>>n; for(int i=0;i >a[i]; sort(a,a+n); int m=a[1]-a[0]; for(int i=2;i
#include#include #include using namespace std;const int N=1000100;int n;int a[N];int gcd(int a,int b){ return b?gcd(b,a%b):a;} int main(void){ cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+1+n); for(int i=2;i<=n;i++) a[i]-=a[1];//直接保存差 int d=a[2]; for(int i=3;i<=n;i++) d=gcd(d,a[i]); if(d) cout<
转载地址:http://ggfy.baihongyu.com/