Cod sursa(job #1273812)

Utilizator andrei_diaconuAndrei Diaconu andrei_diaconu Data 22 noiembrie 2014 22:46:43
Problema Multiplu Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>
#include <iostream>
#define NMax 2000001
using namespace std;
ifstream f("multiplu.in");
ofstream g("multiplu.out");
int a, b, cmmmc, i, qu[NMax], sol, p, u, uc[NMax], fath[NMax], lta, nr[5001];
int cmmdc(int x, int y)
{
    int r=0;
    while (y!=0) {
        r=x%y;
        x=y;
        y=r;
    }
    return x;
}
int main()
{
    f>>a>>b;
    int cmmmc=a*b/cmmdc(a,b);
    qu[1]=1;
    fath[1]=0;
    uc[1]=1;
    sol=1;
    p=1;
    u=1;
    while (p<=u) {
        if ((qu[p]*10)%cmmmc == 0) {
            lta=p;
            break;
        }
        else {
            qu[++u]=(qu[p]*10)%cmmmc;
            fath[u]=p;
        }
        if ((qu[p]*10+1)%cmmmc == 0) {
            lta=p;
            nr[1]=1;
            break;
        }
        else {
            qu[++u]=(qu[p]*10+1)%cmmmc;
            fath[u]=p;
            uc[u]=1;
        }
        p++;
    }
    int ind=1;
    while (lta!=0) {
        nr[++ind]=uc[lta];
        lta=fath[lta];
    }
    for (i=ind; i>=1; i--)
        g<<nr[i];
    return 0;
}