Informatică, întrebare adresată de Diuva, 8 ani în urmă


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 de boiustef
1

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!


boiustef: declară codul ca greşit, că aşa este.... nu e de 100
Alte întrebări interesante