fbpx

Problema #1485 – Jumatate1 – Rezolvari PBInfo

de Mihai-Alexandru

Se citește un număr natural n. Acest număr se “împarte” în alte două numere x și y, astfel: x este format din cifrele din prima jumătate a lui n, y este format din cifrele din a doua jumătate a lui n. Dacă n are număr impar de cifre, cifra din mijloc va fi prima cifră a lui y. De exemplu, dacă n=88132, atunci x=88, iar y=132.

Cerința

Să se determine cel mai mare divizor comun al lui x și y.

Date de intrare

Fișierul de intrare jumatate1.in conține pe prima linie numărul n.

Date de ieșire

Fișierul de ieșire jumatate1.out va conține pe prima linie cel mai mare divizor

Exemplu

jumatate1.in

88132

jumatate1.out

44

Explicație

Numărul x este 88 iar numărul y este 132. Cel mai mare divizor comun al lor este 44.

#include <bits/stdc++.h>

using namespace std;
ifstream fin("jumatate1.in");
ofstream fout("jumatate1.out");
int cmmdc(int a,int b)
{
    long long r,d;
    while(b!=0)
    {
        r=a%b;
        a=b;
        b=r;
    }
    d=a;
    return d;
}
int main()
{

    long long n,m,p=1,d,r;
    long long a,b;
    fin>>n;
    long long aux=n;
    long long cate=0;
    while(aux!=0)
    {
        cate++;
        aux=aux/10;
    }
    if(cate%2==0)
    {
        while(cate/2>0)
        {
            p=p*10;
            cate-=2;
        }

        a=n%p;
        b=n/p;
    }
    else
        if(cate%2==1)
        {
            while(cate/2>0)
            {
                p=p*10;
                cate-=2;
            }

            a=n%(p*10);
            b=n/p/10;
        }
    fout<<cmmdc(a,b);
    return 0;
}
Comentarii

S-ar putea sa iti placa