Cod sursa(job #2627692)

Utilizator mariamirabella2Bucur-Sabau Maria-Mirabela mariamirabella2 Data 11 iunie 2020 19:39:44
Problema Multiplu Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <fstream>
#include <algorithm>
#include <queue>
#include <cstdio>
using namespace std;
ifstream cin("multiplu.in");
ofstream cout("multiplu.out");


int a,b,m,t,viz[2000005],ans,pred[2000005],v[2000005],ultim[2000005];
queue <int> q;

int main()
{

    cin>>a>>b;
    m=a/__gcd(a,b)*b;
    if(m==0){
        cout<<0;
        return 0;
    }
    if(m==1){
        cout<<1;
        return 0;
    }
    else{
        viz[1%m]=1;
    }
    q.push(1);
    pred[1%m]=-1;
    int val1,val2;
    while(!q.empty()){
        t=q.front();
        q.pop();
        val1 = (t*10)%m;
        if(viz[val1]==0){
            viz[val1]=1;
            pred[val1]=t;
            ultim[val1]=0;
            if(val1==0){
                ans=val1;
                break;

            }
            else{
                q.push(val1);
            }
        }
        val2 = (t*10+1)%m ;
        if(viz[val2]==0){
            viz[val2]=1;
            pred[val2]=t;
            ultim[val2]=1;
            if(val2==0){
                ans=val2;
                break;
            }
            else{
                q.push(val2);
            }
        }
    }
    int k=0;
    while(pred[ans]!=-1){
        v[++k]=ultim[ans];
        ans=pred[ans];
    }
    cout<<1;
    for(int i=k;i>0;i--){
        cout<<v[i];
    }
    return 0;
}