Cod sursa(job #2520687)

Utilizator rares9991Matisan Rares-Stefan rares9991 Data 9 ianuarie 2020 17:18:50
Problema Multiplu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <fstream>

using namespace std;

const int N=2000001;
int cf[N], before[N], p[N], v[N];
bool viz[N];

ifstream fin("multiplu.in");
ofstream fout("multiplu.out");

int cmmdc(int a, int b)
{
    int r=a%b;
    while(r)
    {
        a=b;
        b=r;
        r=a%b;
    }
    return b;
}

int main()
{
    int a, b;
    long long mc, ct, c=0;
    fin>>a>>b;
    mc=(a*b)/cmmdc(a,b);
    int prim, ultim;
    prim=ultim=1;
    before[1]=1;
    p[1]=1;
    viz[1]=true;
    cf[1]=1;
    while(prim<=ultim)
    {
        for(int i=0; i<2; i++)
        {
            ct= (p[prim]*10+i)%mc;
            if(viz[ct]==false)
            {
                viz[ct]=true;
                cf[++ultim]=i;
                before[ultim]=prim;
                p[ultim]=ct;
            }
            if(ct==0)
            {
                while(ultim>=1)
                {
                    c++;
                    v[c]=cf[ultim];
                    ultim=before[ultim];
                    if(ultim==1)
                        break;
                }
            }
        }
        prim++;
    }
    fout<<1;
    for(int i=c;i>=1;i--)
        fout<<v[i];
    return 0;
}