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

Cerinţa
Se dau n numere naturale nenule. Calculaţi cel mai mare divizor comun al lor.

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 afișează pe ecran numărul X, reprezentând cel mai mare divizor comun al celor n numere citite.
Problema #305
Daca se poate sa imi dati o varianta in care sa fie folosita una dintre urmatoarele(if,while,for,operatii pe biti) si sa se foloseasca doar iostream

Răspunsuri la întrebare

Răspuns de mateinfo816
2
#include <bits/stdc++.h>

using namespace std;

void citire(int a[],int &n){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
}
int cmmdc(int x,int y){
if(y==0){
return x;
}
return cmmdc(y,x%y);
}

int solve(int a[],int p,int q)
{
if(q-p<=1){
return cmmdc(a[p],a[q]);
}
else{
int m=(p+q)/2;
return cmmdc(solve(a,p,m),solve(a,m+1,q));
}
}

int main()
{
int n,a[1001]={};
citire(a,n);
cout<<solve(a,1,n);
return 0;
}

sper sa fie bine,acum alegi cum vrei sa faci,noi asa am facut in cls.Bafta la info!

PaulRosu: Mersi,mersi,dau o bere
Alte întrebări interesante