Pagini recente » Clasament | preONI 2008 - Clasament general, Clasele 9-10 | Ciob | preONI 2008 - Clasament general, Clasele 9-10 | Cod sursa (job #115655)
Cod sursa(job #115655)
#include <stdio.h>
int main()
{
freopen("multiplu.in", "r", stdin);
freopen("multiplu.out", "w", stdout);
int A, B, N, R, r, a = 0, b = 0, c = 0, P, p;
int i, j;
scanf("%d %d", &A, &B);
// Decompose A*B
for(N = A*B; N > 1 && N%2 == 0; N /= 2, ++a);
for(; N > 1 && N%5 == 0; N /= 5, ++b);
for(; N > 1 && N%3 == 0; N /= 3, ++c);
//printf("%d %d %d\n", a, b, c);
//printf("%d\n", N);
// Find period length
r = R = 1%N;
p = 0;
do {
r *= 10;
r = r%N;
++p;
} while(r != R);
//printf("%d\n", p);
// Find the shortest
for(i = p/2; i >= 1; --i) if(p%i == 0)
break;
if(i < 1)
i = 1;
P = p;
p = i;
//printf("%d %d\n", P, p);
for(j = 1, i = 0; i < c; ++i, j *= 3);
//printf("%d\n", j);
for(; j > 0; --j) {
for(i = P-p; i >= 0; --i) if(i%p == 0)
printf("1");
else printf("0");
}
if(b > a)
a = b;
for(i = 0; i < a; ++i)
printf("0");
printf("\n");
return 0;
}