Pagini recente » Cod sursa (job #238833) | Cod sursa (job #882487) | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #391528)
Cod sursa(job #391528)
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define NMAX 2000010
bool D[NMAX];
int v[NMAX], pre[NMAX];
char sol[NMAX];
int m, nr;
int cmmdc(int a,int b){
if(a % b == 0)
return b;
return cmmdc(b, a%b);
}
void adauga(int x,int c){
int p = (x*10 + c)%m;
if(D[p]) return;
D[p] = 1;
v[++v[0]] = p;
pre[p] = c + (x << 1);
}
int main(){
freopen("multiplu.in", "r", stdin);
freopen("multiplu.out", "w", stdout);
int a, b;
scanf("%d%d", &a, &b);
m = a/cmmdc(a,b) * b;
v[++v[0]] = 1;
for(int i = 1; v[v[0]]; ++i){
adauga(v[i], 0);
if(!v[v[0]]) break;
adauga(v[i], 1);
}
int x = 0;
while(pre[x]){
sol[++nr] = (pre[x]&1) + '0';
x = pre[x] >> 1;
}
sol[++nr] = '1';
reverse(sol + 1, sol + nr + 1);
printf("%s\n",sol+1);
}