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
Răspunsuri la întrebare
Răspuns:
#include <iostream>
using namespace std;
int n, i, v[2502], a1,d;
int main()
{
cin >> n;
for (i=0; i<n; ++i)
cin >> v[i];
if (n==1) cout << "DA";
else
{
a1=v[0]; d=v[1]-v[0];
if (d<0) d=-d;
a1=min(v[0],v[1]);
int ratia=d;
for (i=2; i<n; ++i)
{
d=v[i]-v[i-1];
if (d<0) d=-d;
if (d<ratia) ratia=d;
a1=min(a1,v[i]);
}
int este=1;
for (i=0; i<n; ++i)
{
if ((v[i]-a1)%ratia!=0) {este=0; break;}
}
if (este) cout << "DA";
else cout << "NU";
}
return 0;
}
Explicație:
pbinfo este în pană azi de dimineaţă, deaceea codul nu e testat acolo. Dacă ai acces la pbinfo verifică codul şi-mi scrii ce rezultat ai obţinut. Problema are numele verifProgresie.
dacă ai întrebări, dai de ştire... Succese!