Pagini recente » Cod sursa (job #1511275) | Cod sursa (job #492769) | Cod sursa (job #295965) | Cod sursa (job #1143740) | Cod sursa (job #116746)
Cod sursa(job #116746)
#include <cstdio>
#include <cstring>
using namespace std;
#define MAXN 2000100
int N, A, B, pred[MAXN], Q[MAXN];
char viz[MAXN], op[MAXN];
void solve(void)
{
int inc, sf, x, r;
Q[inc = sf = 0] = viz[1] = 1;
while(inc <= sf)
{
x = Q[inc++];
if(!viz[r=x*10%N]) Q[++sf] = r, pred[r] = x, viz[r] = 1;
if(!viz[r=r+1>=N?r+1-N:r+1])
Q[++sf] = r, pred[r] = x, op[r] = viz[r] = 1;
}
}
int gcd(int a, int b) { return !b ? a : gcd(b, a%b); }
void rec(int r)
{
if(r == 1) { printf("1"); }
else rec(pred[r]), printf("%d", op[r]);
}
int main(void)
{
freopen("multiplu.in", "rt", stdin);
freopen("multiplu.out", "wt", stdout);
scanf("%d %d", &A, &B);
N = A*B/gcd(A, B);
if(N == 1) { printf("1\n"); return 0; }
solve();
rec(0), printf("\n");
return 0;
}