👤

Salut!

Am rezolvat problema, dar nu functioneaza. Stiu sa gasesc cel mai mare divizor comun (algoritmul lui Eucled), dar nu stiu ce sa numar mai exact.

Aici e codul meu:


#include

using namespace std;

int main ()

{

int v[100],i,n,aux1,aux2,k=0;

cin>>n;

for(i=0;i
cin>>v[i];

for(i=0;i
{

aux1=v[i];

aux2=v[n-i-1];

while(aux1!=aux2)

{

if(aux1>aux2 || aux1==aux2)

aux1=aux1-aux2;

if(aux1
aux2=aux2-aux1;


}

if (aux1==1) //daca cele doua numere devin egale inseamna ca a fost gasit cel mai mare divizor comun, adica, perechea de aux1 si aux 2 care sunt prime ---> k++---> adaugam 1 la variabila incrementala

k++;

}

if (k % 2 ==0)

cout <
else

cout <
return 0;

}


Aici e pb:

Cerinţa
Se dă un vector cu n numere naturale. Să se determine câte dintre perechile de elemente egal depărtate de capetele vectorului sunt prime între ele.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spaţii, reprezentând elementele vectorului.

Date de ieşire
Programul afișează pe ecran numărul C, reprezentând valoarea cerută.

Restricţii şi precizări
1 ≤ n ≤ 200
elementele vectorului vor fi cuprinse între 0 și 1000

Exemplu
Intrare

6
50 18 15 28 35 40
Ieșire

2


Răspuns :

#include <iostream>

using namespace std;

int main()

{

   int n,x,y,k=0,i,a[200];

   cin>>n;

   for(i=0; i<n;i++)

       cin>>a[i];

   for(i=0; i<n; i++)

   {

       x=a[i];

       y=a[n-i-1];

       while(x!=y)

       {

           if(x>y || x==y)

               x=x-y;

           if(x<y)

               y=y-x;

       }

       if(x==1)

           k++;

   }

   if(k%2==0)

       cout<<k/2;

   else

       cout<<k/2+1;

}

Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări suplimentare sau aveți nevoie de sprijin, nu ezitați să ne contactați. Vă așteptăm cu drag și data viitoare! Nu uitați să adăugați site-ul nostru la favorite pentru acces rapid.


Wix Learning: Alte intrebari