0
点赞
收藏
分享

微信扫一扫

1246. 等差数列

boom莎卡拉卡 2022-03-20 阅读 78
c++

1246. 等差数列

a[i] = a[1] + (i - 1) * d
所以和a[1] 与 d有关系。
最大公差就是 所有a[i] - a[1] 的最大公约数

d = gcd(d, a[i] - a[1])
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+ 10;
int a[N];
int n;
int gcd(int a,int b)
{
	while(b)
	{
		int c = a;
		a = b;
		b = c % a;
	}
	return a;
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
    }
    int d =0;
    sort(a+1,a+1+n);
    for(int i=1;i<=n;i++)
    {
        d =gcd(d,a[i] - a[1]);
    }
    if(d == 0) printf("%d",n);
    else printf("%d",(a[n] - a[1]) / d + 1 );
}

难了不会,会了不难。

举报

相关推荐

等差数列划分

算法-等差数列

等差数列求和

24 求等差数列

蓝桥杯——等差数列

0 条评论