Pagini recente » Cod sursa (job #1298227) | Cod sursa (job #83475) | Cod sursa (job #2733169) | Cod sursa (job #2901629) | Cod sursa (job #115253)
Cod sursa(job #115253)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
const int N_MAX = 100;
int st[N_MAX], A, B;
int MOD(int A[], int x)
{
int i, t = 0;
for (i = A[0]; i > 0; i--)
t = (t * 10 + A[i]) % x;
return t;
}
int i, MIN[50];
int comp(int A[], int B[])
{
if (A[0] != B[0]) return (A[0] < B[0]);
else {
for (i = A[0]; i >= 1; i --) {
if (A[i] != B[i]) return (A[i] < B[i]);
}
}
return 0;
}
int g;
void back(int k)
{
g = 0;
for (i = 1; i < k; i ++) {
if (st[i] != 0) {
g = 1;
break;
}
}
if (g) {
st[0] = k - 1;
if (MOD(st, A) == 0 && MOD(st, B) == 0) {
if (comp(st, MIN)) memcpy(MIN, st, sizeof(st));
}
}
if (k <= 18) {
for (int c = 0; c < 2; c ++) {
st[k] = c;
back(k + 1);
}
}
}
int main()
{
freopen("multiplu.in", "r", stdin);
#ifndef _SCREEN_
freopen("multiplu.out", "w", stdout);
#endif
scanf("%d %d\n", &A, &B);
MIN[0] = 40;
for (i = 1; i <= 40; i ++) MIN[i] = 4;
back(1);
for (i = MIN[0]; i >= 1; i --) printf("%d", MIN[i]);
printf("\n");
return 0;
}