fbpx

Problema #1573 – VerifProgresie – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Se dau n valori naturale. Stabiliți dacă există o progresie aritmetică cu rația număr natural mai mare decât 1 din care să facă parte toate aceste valori.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.

Date de ieșire

Programul va afișa pe ecran mesajul DA , dacă există progresia aritmetică cerută, respectiv NU în caz contrar.

Restricții și precizări

  • 1 ≤ n ≤ 2500
  • cele n numere citite vor fi mai mici decât 2.000.000.000

Exemplu

Intrare

6
2 10 12 16 20 18

Ieșire

DA

Explicație

Rația este 2 , lipsesc termenii 4, 6, 8, 14.

#include <bits/stdc++.h>

using namespace std;
int cmmdc(int a , int b)
{
    int r;
    while(b!=0)
    {
        r=a%b;
        a=b;
        b=r;
    }
    return a;
}
int main()
{
    int n , a[3001];
    cin >> n;
    for(int i = 1 ; i <= n ; ++i) cin >> a[i];
    sort(a+1 , a+n+1);
    int max = a[2]-a[1];
    for(int i = 2 ; i < n ; ++i)
        max=cmmdc(max,a[i+1]-a[i]);
    if(max>1) cout << "DA";
    else cout << "NU";
}
Comentarii

S-ar putea sa iti placa