博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1466: [蓝桥杯2019初赛]等差数列 【中 / 思维 / 数学】
阅读量:95 次
发布时间:2019-02-26

本文共 788 字,大约阅读时间需要 2 分钟。

在这里插入图片描述

http://oj.ecustacm.cn/problem.php?id=1466

思路: 注意一定要先排序,题目给的有序数列是特例。

然后第一个数就是最小的数,最后一个数就是最大的。
因为我们从 最小的前面补数没有任何的意义。
要让数列的项数最少,那么公差一定最大。即 各个数的差的最大公约数。

#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/

你可能感兴趣的文章