Cod sursa(job #1878401)

Utilizator AlexTheDagonBogdan Tudor AlexTheDagon Data 14 februarie 2017 09:17:32
Problema Multiplu Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <iostream>
#include <fstream>
#include <vector>
#define pb push_back
using namespace std;
ifstream in("multiplu.in");
ofstream out("multiplu.out");
int a,b,c,x,y,d;
vector <int> v[50],ad[50];
int pozi,pozj,sem,l,sir[40],k;
long long nr;
int main()
{
    in>>a>>b;
    x=a,y=b;
    while(b)
    {
        c=a%b;
        a=b;
        b=c;
    }
    d=x*y/a;
    v[1].pb(1);
    ad[1].pb(1);
    sem=1;
    pozi=1;
    while(sem)
    {
        ++pozi;
        l=0;
        for(int i=0;i<v[pozi-1].size() && sem==1;++i)
        {
            l+=2;
            nr=v[pozi-1][i]*10;
            v[pozi].pb((nr+1)%d);
            v[pozi].pb(nr%d);
            ad[pozi].pb(1);
            ad[pozi].pb(0);
            if(v[pozi][l-1]==0)
            {
                sem=0;
                pozj=l-1;
            }
            if(v[pozi][l-2]==0)
            {
                sem=0;
                pozj=l-2;
            }
        }
    }
    sir[0]=pozi;
    while(pozi)
    {
        cout<<pozj<<endl;
        sir[++k]=ad[pozi][pozj];
        pozj/=2;
        --pozi;
    }
    for(int i=sir[0];i>0;--i)out<<sir[i];
    return 0;
}