Inlocuirea fiecarui element dintr-un vector cu cmmdc dintre element si oglinditul lui

Vectorul contine numere naturale nenule.

Afisarea finala se va face cu elementele in sens invers.

#include <iostream>
using namespace std;
void citire(int v[], int lv) {
    int i;
    for (i = 1; i <= lv; i++)
    {
        cin >> v[i];
    }
}

int oglindit(int nr){
    int o = 0;
    while (nr){
        o = o*10+nr%10;
        nr/=10;
    }
    return o;
}

int cmmdc(int a,int b) {
    if (a==0 && b==0) {return -1;}
    if (a==0 && b!=0) {return b;}
    if (a!=0 && b==0) {return a;}
    int r = a%b;
    while (r) { a= b; b = r; r = a%b;}
    return b;
}

void afisare(int v[], int lv) {
    int i;
    for (i = lv; i >= 1; i--)
    {
        cout << cmmdc(v[i],oglindit(v[i]))<<" ";
    }
}

int main()
{
    int n, a[1010];
    cin>>n;
    citire(a,n);
    afisare(a,n);
    return 0;
}

Lasă un răspuns