Cod sursa(job #2711839)

Utilizator DariusGhercaDarius Gherca DariusGherca Data 24 februarie 2021 19:09:48
Problema Multiplu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("multiplu.in");
ofstream g("multiplu.out");
const int N=2e6+10;
struct data{
    long long val;
    long long nr;
};
bitset <N> frecv;
void afisare(long long nr)
{
    stack <int> s;
    while(nr)
    {
        s.push(nr%2);
        nr=nr/2;
    }
    while(!s.empty())
    {
        g<<s.top();
        s.pop();
    }
}
int main()
{
    long long x,y;
    f>>x>>y;
    x=(x*y)/__gcd(x,y);
    queue <data> q;
    data aux;
    aux.nr=1;
    aux.val=1;
    q.push(aux);
    while(!q.empty())
    {
        data t=q.front();
        q.pop();
        if(t.val==0)
        {
            afisare(t.nr);
            return 0;
        }
        if(!frecv[t.val])
        {
            frecv[t.val]=1;
            data aux;
            aux.val=(t.val*10)%x;
            aux.nr=t.nr*2;
            q.push(aux);
            aux.val=(t.val*10+1)%x;
            aux.nr=t.nr*2+1;
            q.push(aux);
        }
    }
    return 0;
}