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
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!
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
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Geografie,
8 ani în urmă
Limba română,
8 ani în urmă
Limba română,
8 ani în urmă
Limba română,
9 ani în urmă
Engleza,
9 ani în urmă