Cod sursa(job #1418851)

Utilizator robx12lnLinca Robert robx12ln Data 14 aprilie 2015 11:14:57
Problema Multiplu Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.37 kb
#include<fstream>
#define DIM 2000005
using namespace std;
ifstream fin("multiplu.in");
ofstream fout("multiplu.out");
int M,n;
int cif[DIM],t[DIM];
char f[DIM];
short c[DIM];
void sol(){
    int i;
    for(i=c[0];i>=1;i--){
        fout<<c[i];
    }
    return ;
}
int rest(int p){
    c[0]=1;
    c[1]=0;
    while(p!=0){
        c[++c[0]]=cif[p];
        p=t[p];
    }
    int r=0;
    int i;
    for(i=c[0];i>=1;i--){
        r=(r*10+c[i])%M;
    }
    return r;
}
int rest1(int p){
    c[0]=1;
    c[1]=1;
    while(p!=0){
        c[++c[0]]=cif[p];
        p=t[p];
    }
    int r=0;
    int i;
    for(i=c[0];i>=1;i--){
        r=(r*10+c[i])%M;
    }
    return r;
}
int i,r,a,b,x,y;
int main(){
    fin>>x>>y;
    a=x;
    b=y;
    r=0;
    while(b!=0){
        r=a%b;
        a=b;
        b=r;
    }
    M=(x*y)/a;
    n=1;
    cif[1]=1;
    f[1]=1;
    i=1;
    while(0==0){
        r=rest(i);
        if(f[r]==0){
            f[r]=1;
            cif[++n]=0;
            t[n]=i;
            if(r==0){
                sol();
                return 0;
            }
        }
        r=rest1(i);
        if(f[r]==0){
            f[r]=1;
            cif[++n]=1;
            t[n]=i;
            if(r==0){
                sol();
                return 0;
            }
        }
        i++;
    }
    return 0;
}