Pagini recente » Cod sursa (job #1909812) | Cod sursa (job #515060) | Cod sursa (job #861307) | Cod sursa (job #2669656) | Cod sursa (job #218871)
Cod sursa(job #218871)
#include <stdio.h>
#define NMAX 2000100
FILE *f = fopen("multiplu.in", "r"), *g = fopen("multiplu.out", "w");
int up[NMAX], cif[NMAX], st[NMAX], sol[100];
char v[NMAX];
int k;
int a, b, m, prod, lung;
int x;
int main()
{
fscanf(f, "%d %d", &a, &b);
fclose(f);
if (a < b) {int x = a; a = b; b = x;}
prod = a * b;
while (b)
{
x = b;
b = a % b;
a = x;
}
int d = a;
m = prod / d;
for (int i = 1; i <= m; i++)
v[i] = 0;
v[1] = 1;
st[1] = 1;
cif[1] = 1;
k = lung = 1;
while (st[k])
{
if (v[(st[k] * 10) % m] == 0)
{st[++lung] = (st[k] * 10) % m;
up[lung] = k;
cif[lung] = 0;
v[st[lung]] = 1;
}
if (v[(st[k] * 10 + 1) % m] == 0)
{
st[++lung] = (st[k] * 10 + 1) % m;
up[lung] = k;
cif[lung] = 1;
v[st[lung]] = 1;
}
k++;
}
int i = 0;
while (k > 0)
{i++;
sol[i] = cif[k];
k = up[k];
}
for (int j = i; j >= 1; j--)
fprintf(g, "%d", sol[j]);
fclose(g);
return 0;
}