Pagini recente » Cod sursa (job #330381) | Cod sursa (job #1049576) | Cod sursa (job #1877541) | Cod sursa (job #1511901) | Cod sursa (job #391526)
Cod sursa(job #391526)
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define NMAX 2000010
int D[NMAX];
int v[NMAX], pre[NMAX];
bool anter[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 = ((long long) x*10 + c)%m;
if(D[p]) return;
D[p] = D[x] + 1;
v[++v[0]] = p;
pre[p] = x;
anter[p] = c;
}
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] = anter[x] + '0';
x = pre[x];
}
sol[++nr] = '1';
reverse(sol + 1, sol + nr + 1);
printf("%s\n",sol+1);
}