Informatică, întrebare adresată de sikesjack1, 9 ani în urmă

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ăspunsuri la întrebare

Răspuns de Junko912
0

#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;

}


sikesjack1: Codul e bun, mersi mult. Acuma in mare parte am inteles, dar imi poti explica te rog, ultima parte?
sikesjack1: if(k%2==0)

cout<
else

cout<
sikesjack1: k/2+1;
Alte întrebări interesante