Cod sursa(job #1414285)

Utilizator avaspAva Spataru avasp Data 2 aprilie 2015 14:54:02
Problema Multiplu Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.36 kb
#include<cstdio>
#include<queue>
using namespace std;
struct cmp{int rest;long long nr;};
queue<cmp>Q;
cmp ales;
bool vc[2000001];
int ca,num,cb,a,b,res,rez,v[25];
int main(){
    freopen("multiplu.in","r",stdin);
    freopen("multiplu.out","w",stdout);
    scanf("%d%d",&a,&b);
    ca=a;
    cb=b;
    while(cb!=0){
        res=ca%cb;
        ca=cb;
        cb=res;
    }
    num=(a*b)/ca;
    cmp str;
    str.nr=1;
    str.rest=1;
    if(num==1)
        printf("1");
    else{
        Q.push(str);
        int pp=1;
        while(!Q.empty()&&pp==1){
            ales=Q.front();
            Q.pop();
            //ad 0
            str.nr=ales.nr*2;
            str.rest=(ales.rest*10)%num;
            if(str.rest==0){
                rez=str.nr;
                pp=0;
            }
            else{
            if(vc[str.rest]==false)
                Q.push(str);
            //ad 1
            str.nr=ales.nr*2+1;
            str.rest=(ales.rest*10 +1)%num;
            if(str.rest==0){
                rez=str.nr;
                pp=0;
            }
            if(vc[str.rest]==false)
                Q.push(str);
            }
        }
        int i=0;
        while(rez!=0){
            v[++i]=rez%2;
            rez/=2;
        }
        for(int j=i;j>=1;j--)
            printf("%d",v[j]);
    }

    return 0;
}