Cod sursa(job #2668058)

Utilizator PredescuSebastianIonPredescu Sebastian Ion PredescuSebastianIon Data 4 noiembrie 2020 13:45:22
Problema Multiplu Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <bits/stdc++.h>
#define nmax 200002

using namespace std;
ifstream f("multiplu.in");
ofstream g("multiplu.out");
int a,b,ok,nr1,nr2,x;
int v1[nmax],q[nmax],frecv[nmax];
stack <int> st;
bitset <nmax> marker;
void solve(int y)
{
    int r=(x*10+y)%a;
    if(r==0)
    {
        ok=1;
        q[++nr2]=r;
        v1[nr2]=nr1;
        marker[nr2]=y;
    }
    else
    {
        if(frecv[r]==0)
        {
            q[++nr2]=r;
            v1[nr2]=nr1;
            marker[nr2]=y;
            frecv[r]=1;
        }
    }
}
int main()
{
    f>>a>>b;
    a=a*b/__gcd(a,b);
    nr1=nr2=ok=0;
    q[nr1]=frecv[1]=marker[0]=1;
    while(ok==0)
    {
        x=q[nr1];
        solve(0);
        solve(1);
        nr1++;
    }
    while(nr2)
    {
        st.push((int)marker[nr2]);
        nr2=v1[nr2];
    }
    g<<"1";
    while(!st.empty())
    {
        g<<st.top();
        st.pop();
    }
    return 0;
}