Ha, ha. Kakwo stana momcheta? Eto wi A i E. Gledajte si gi i im se kefete. :) Btw, Ludo, nali kaza che taq s Gopher-a ste q reshili? Pozdrawi! -- Ivaylo Riskov <ivaylo_riskov@xxxxxxx> "If it happens, it must be possible."
#include <stdio.h> int prime[30]; int factors[30]; int ptr = 0; void Eratosten() { int sieve[100]; int i, j; for (i = 0; i < 100; i++) sieve[i] = 0; for (i = 2; i < 100; i++) if (!sieve[i]) { prime[ptr++] = i; for (j = i; j < 100; j += i) sieve[j] = 1; } } int main() { int n, d, t; int i, j; long long c; Eratosten(); while (1) { scanf("%i %i", &n, &d); if (!n && !d) break; if (d < 0) d *= -1; for (i = 0; i < 30; i++) factors[i] = 0; for (i = 2; i <= n; i++) for (t = i, j = 0; t > 1 && j < ptr; j++) while (t%prime[j] == 0) t /= prime[j], factors[j]++; for (j = 0; d > 1 && j <ptr; j++) while (d%prime[j] == 0) d /= prime[j], factors[j]--; if (d > 1) { printf("0\n"); continue; } c = 1; for (i = 0; i < ptr; i++) if (factors[i] < 0) { c = 0; break; } else c *= factors[i] + 1; printf("%Li\n", c); } return 0; }
#include <stdio.h> #include <math.h> int cmp(double x, double y) { if (x - y > 1e-8) return 1; if (y - x > 1e-8) return -1; return 0; } int main() { int n1, n2; int in_d1, in_d2; double D, L, x1, y1, x2, y2; double t; double w, sw; while (scanf("%lf %lf %lf %lf %lf %lf", &D, &L, &x1, &y1, &x2, &y2) == 6) { if (cmp(y1, y2) > 0) { t = x1; x1 = x2; x2 = t; t = y1; y1 = y2; y2 = t; } n1 = y1/D; if (cmp(y1, 0.0) < 0) n1--; if (cmp(y1, n1*D - L) >= 0 && cmp(y1, n1*D + L) <= 0) in_d1 = 1; else { n1++; if (cmp(y1, n1*D - L) >= 0 && cmp(y1, n1*D + L) <= 0) in_d1 = 1; else in_d1 = 0; } n2 = y2/D + 1; if (cmp(y2, 0.0) < 0) n2--; if (cmp(y2, n2*D - L) >= 0 && cmp(y2, n2*D + L) <= 0) in_d2 = 1; else { n2--; if (cmp(y2, n2*D - L) >= 0 && cmp(y2, n2*D + L) <= 0) in_d2 = 1; else in_d2 = 0; } // both are in the same ditch if (in_d1 && in_d2 && n1 == n2) { w = fabs(x1 - x2); if (cmp(y1 - (n1*D - L) + y2 - (n2*D - L), (n1*D + L) - y1 + (n2*D + L) - y2) > 0) sw = (n1*D + L) - y1 + (n2*D + L) - y2; else sw = y1 - (n1*D - L) + y2 - (n2*D - L); t = sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2)); if (cmp(t, sw) < 0) sw = t, w = 0.0; printf("The gopher has to swim %.2lf meters and walk %.2lf meters.\n", sw, w); continue; } sw = 0.0; if (in_d1) { sw += n1*D + L - y1; n1++; } if (in_d2) { sw += y2 - n2*D + L; n2--; } sw += 2.0*(n2 - n1 + 1)*L; t = fabs(y2 - y1) - sw; w = x2 - x1; w = sqrt(t*t + w*w); printf("The gopher has to swim %.2lf meters and walk %.2lf meters.\n", sw, w); } return 0; }