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
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?
cout<
else
cout<
Alte întrebări interesante
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Engleza,
8 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă