Hora de início: 2011-01-14 09:14:00 -0200 Hora de término: 2011-01-14 13:14:00 -0200
POS | Competidor | Resultado | Pontuação | A | B | C | D | E | F | |
---|---|---|---|---|---|---|---|---|---|---|
1 | walter erquinigo | 5 (645) | 99 | +0 | +0 | +1 | +8 | +1 | -4 | |
2 | Daniel Ribeiro Moreira | 4 (357) | 97 | +1 | +0 | +0 | +1 | -2 | -2 | |
3 | Atol Fortin | 4 (368) | 95 | +1 | +0 | +0 | +2 | -11 | ||
4 | Gabriel Luís Mello Dalalio | 4 (680) | 93 | +2 | +1 | +0 | +2 | |||
5 | Filipe Martins | 4 (742) | 91 | +0 | +2 | +0 | +6 | -1 | ||
6 | Guilherme Souza | 4 (952) | 89 | +0 | +6 | +3 | +6 | -6 | ||
7 | Ricardo Hahn | 3 (217) | 87 | +1 | +0 | +0 | ||||
8 | Jesus Alejandro | 3 (225) | 85 | +0 | +0 | +0 | ||||
9 | Eduardo Ribas | 3 (228) | 83 | +1 | +1 | -5 | +2 | -1 | ||
10 | Cesar Kawakami | 3 (244) | 81 | +1 | +0 | +0 | -7 | |||
11 | Felipe Abella | 3 (250) | 79 | +1 | +1 | +0 | -7 | |||
12 | Natan Costa Lima | 3 (369) | 77 | +2 | +1 | +0 | ||||
13 | daniel soncco | 3 (382) | 75 | -2 | +0 | +0 | +1 | -4 | ||
14 | Eric Destefanis | 3 (389) | 73 | +1 | +3 | +0 | -6 | |||
15 | Tiago Madeira | 3 (423) | 71 | +2 | +0 | +1 | -8 | -4 | ||
16 | Leonardo Marchetti | 2 (175) | 69 | +2 | +0 | -8 | ||||
17 | Thiago Sonego Goulart | 2 (243) | 67 | +1 | +0 | -2 | -3 | |||
18 | Adriana Libório | 2 (289) | 65 | +1 | +1 | |||||
19 | Cesar Gamboa | 2 (339) | 63 | +1 | +1 | -1 | ||||
20 | Davi Duarte Pinheiro | 2 (360) | 61 | +3 | +0 | -1 | ||||
21 | Pablo Pinheiro | 2 (421) | 59 | +3 | +0 | |||||
22 | Luiz Afonso | 2 (472) | 57 | -2 | +1 | -1 | +3 | |||
23 | Pedro Veras | 1 (41) | 55 | +0 | -1 | -10 | ||||
24 | Igor Ramos | 1 (57) | 53 | +1 | -1 | |||||
25 | Matias Daniel Tealdi | 1 (100) | 51 | +2 | -2 | |||||
26 | Douglas Santos | 1 (103) | 49 | +1 | -2 | |||||
27 | Renato Ferreira | 1 (108) | 47 | +2 | -5 | |||||
28 | Renato Parente | 1 (132) | 45 | +3 | -5 | |||||
29 | Felipe Menezes Machado | 1 (145) | 43 | -4 | -1 | +2 | ||||
30 | Paulo Costa | 1 (167) | 41 | -2 | -4 | +1 | -1 | |||
31 | Gaston Ingaramo | 1 (172) | 39 | -5 | +1 | |||||
32 | Arthur | 1 (181) | 37 | +5 | -2 | |||||
33 | Leonardo Martinez | 1 (182) | 35 | +0 | -4 | |||||
34 | Leonardo Inácio | 1 (238) | 33 | +5 | -3 | |||||
35 | Edwin Macelo Guzman Buezo | 1 (257) | 31 | +4 | ||||||
36 | Andre Hahn | 1 (270) | 29 | +5 | -5 | |||||
37 | Rafael Brandão | 1 (274) | 27 | -5 | +2 | -1 | ||||
44 | Vinicius Ruoso | 1 (341) | 13 | +8 | -1 | |||||
44 | Alex Alves da Paixão | 0 (0) | 13 | -4 | ||||||
44 | Victor Jatobá | 0 (0) | 13 | -3 | ||||||
44 | Phyllipe Cesar | 0 (0) | 13 | -11 | -1 | |||||
44 | Caique Porto Lira | 0 (0) | 13 | -6 | -4 | -1 | ||||
44 | Igor R. de Assis | 0 (0) | 13 | |||||||
44 | gustavo pacianotto gouveia | 0 (0) | 13 | -2 | -2 | |||||
44 | Leonardo Flores Zambaldi | 0 (0) | 13 | -1 | ||||||
44 | Vinicius Flores Zambaldi | 0 (0) | 13 | -5 | -1 | |||||
44 | Nicolas Gumiel | 0 (0) | 13 | -4 | ||||||
44 | Victor Hugo Paredes Mora | 0 (0) | 13 | -1 | -1 | -2 | ||||
44 | Renan Ferraz Pires | 0 (0) | 13 | |||||||
44 | Ricardo Oliveira | 0 (0) | 13 | -7 | </div> |
#include <cstdio> #include <algorithm> using namespace std; typedef long long lint; int main() { int t, x, m; scanf("%d %d %d", &t, &x, &m); int best_d = -1, best_s = -1; for (int i = 0; i < m; i++) { int d, s; scanf("%d %d", &d, &s); if (i == 0) best_d = d, best_s = s; else { lint dd = d; lint ss = s; lint bdd = best_d; lint bss = best_s; if (dd * bss < bdd * ss) { best_d = d; best_s = s; } } } if (m == 0) { printf("%d\n", t * x); return 0; } int steps = (best_d + best_s - 1) / best_s; int curr = min(steps - 1, t); int ans = curr; if (steps > 1) { while (curr + 1 < t) { curr += 2; ans++; } } lint llans = (lint) ans * (lint) x; printf("%lld\n", llans); return 0; }
#include <cstdio> #include <cmath> #include <algorithm> typedef long long lint; using namespace std; inline lint mceil(lint a, lint b) { return (a + b - 1) / b; } int main() { lint d, n; while (scanf("%lld %lld", &d, &n) && (n > 0 || d > 0)) { int sqr = sqrt(d); lint ans = 0; lint cnt = 0; lint last = 0; if (sqr*sqr == d) sqr--; for (lint i = 1; i <= sqr && cnt < n; i++) { cnt++; ans += mceil(d, i); last = mceil(d, i); } for (lint res = last - 1; res > 1 && cnt < n; res--) { lint a = mceil(d, res); lint b = mceil(d, res - 1); ans += res * min(b - a, n - cnt); cnt += b - a; } if (cnt < n) ans += n - cnt; printf("%lld\n", ans); } return 0; }
#include <iostream> #include <cstring> #include <cstdio> #define MAXD 16 typedef long long lint; using namespace std; int ndigit; int num[MAXD]; int ret[MAXD]; int squared[MAXD]; int cubed[MAXD]; lint result; void mult(int * d, int * s1, int *s2) { for (int i = 0; i < ndigit; i++) d[i] = 0; for (int i = 0; i < ndigit; i++) for (int j = 0; j+i < ndigit; j++) d[i+j] += s1[i] * s2[j]; } void norm(int * d) { int carry = 0; for (int i = 0; i < ndigit; i++) { d[i] += carry; carry = d[i] / 10; d[i] %= 10; } } void cube(void) { mult(squared, ret, ret); mult(cubed, squared, ret); norm(cubed); } int go(int i) { if (i) { cube(); for (int j = 0; j < i; j++) if (cubed[j] != num[j]) return 0; } if (i == ndigit) { result = 0; for (int j = ndigit-1; j >= 0; j--) result = 10LL*result + ret[j]; return 1; } for (int d = 0; d < 10; d++) { ret[i] = d; if (go(i+1)) return 1; } return 0; } int main(void) { int ntest; scanf("%d", &ntest); for (int t = 0; t < ntest; t++) { lint _num; scanf("%lld", &_num); ndigit = 0; while (_num) { num[ndigit++] = _num%10; _num /= 10; } go(0); printf("%lld\n", result); } return 0; }
#include <cstdio> #include <utility> #include <map> using namespace std; typedef long long lint; const lint MOD = 1300031; const int MAX_N = 2000002; lint fat[MAX_N]; lint minv[MAX_N]; lint x, y; int n, c, t; void egcd(lint a, lint b) { if (b == 0) { x = 1; y = 0; return; } egcd(b, a % b); lint nx = y; lint ny = x - y*(a/b); x = nx; y = ny; } lint inv(lint a, lint b) { egcd(a, b); while (x < 0) x += b; return x; } int main() { fat[0] = 1; for (register int i = 1; i < MAX_N; ++i) fat[i] = (fat[i - 1] * i) % MOD; scanf("%d", &t); while (t--) { scanf("%d %d", &n, &c); if (minv[fat[c]] == 0) minv[fat[c]] = inv(fat[c], MOD); if (minv[fat[n - 1]] == 0) minv[fat[n - 1]] = inv(fat[n - 1], MOD); printf("%d\n", (int) ((fat[n + c - 1] * minv[fat[c]] * minv[fat[n - 1]]) % MOD)); } return 0; }
#include <cstdio> #include <algorithm> #include <map> #include <cstdlib> #include <cmath> #include <queue> using namespace std; typedef unsigned long long lint; map < lint, int > factors; inline void add(lint x) { if (!factors.count(x)) factors[x] = 1; else factors[x]++; } inline lint mult(lint a, lint b, lint p) { lint ans = 0; while (b > 0) { if (b & 1) ans = (ans + a) % p; a = (a + a) % p; b /= 2ULL; } return ans; } lint f(lint x, int c, lint n) { return (mult(x, x, n) + c) % n; } lint gcd(lint a, lint b) { lint g = a % b; while (g != 0) { a = b; b = g; g = a % b; } return b; } lint mpow(lint a, lint b, lint p) { lint ans = 1; while (b) { if (b & 1) ans = mult(ans, a, p); a = mult(a, a, p); b /= 2ULL; } return ans; } bool prime(lint n) { if (n == 2) return true; if (n % 2 == 0) return false; if (n == 1) return false; if (n == 3) return true; lint s = 0, d = n - 1; while ((d & 1) == 0) { s++; d /= 2ULL; } for (int k = 0; k < 13; k++) { lint a = (rand() % (n - 3)) + 2; lint x = mpow(a, d, n); if (x == 1 || x == n - 1) continue; for (unsigned int r = 1; r < s; r++) { x = (mult(x, x, n)) % n; if (x == 1) { return false; } if (x == n - 1) goto END; } return false; END: ; } return true; } void pollard(lint nn) { queue < lint > q; q.push(nn); while (!q.empty()) { lint n = q.front(); q.pop(); if (prime(n)) { add(n); } else { for (int c = 1; c <= 13; c++) { lint x = rand() % n; lint y = f(x, c, n); //printf("x %llu y %llu\n", x, y); while (true) { //printf("n %llu\n", n); lint g = gcd(max(x, y) - min(x, y), n); if (g == n) break; if (g > 1) { lint n1 = g; lint n2 = n/g; if (n1 > n2) swap(n1, n2); q.push(n1); q.push(n2); goto END; } x = f(x, c, n); y = f(f(y, c, n), c, n); } } END: ; } } } int main() { srand(1009007); int t = 1; scanf("%d", &t); while (t--) { lint n; long long nn; scanf("%lld", &nn); n = (lint) nn; if (nn < 0) { printf("NO\n"); continue; } else if (nn == 0) { printf("YES\n"); continue; } factors.clear(); pollard(n); bool ok = true; map < lint, int >::iterator it; for (it = factors.begin(); it != factors.end(); ++it) { if (it->first % 4 == 3 && it->second % 2 == 1) { ok = false; //break; } } if (ok) printf("YES\n"); else printf("NO\n"); } return 0; }
#include <stdio.h> #include <stdlib.h> struct vert { int deg, match, valid, mark, from; int sous[8]; }; struct graph { int n; struct vert verts[1]; }; char zad[20][20]; int n, m; void decode(int v) { int x1, y1, x2, y2; y2 = v & 7; v >>= 3; x2 = v & 7; v >>= 3; y1 = v & 7; x1 = v >> 3; printf ("%d, %d ; %d, %d\n", x1 + 1, y1 + 1, x2 + 1, y2 + 1); } int encode (int x1, int y1, int x2, int y2) { int code, t; /* The first figure should have smaller coordinates. */ if (y1 > y2 || (y1 == y2 && x1 > x2)) { t = x1; x1 = x2; x2 = t; t = y1; y1 = y2; y2 = t; } code = x1; code = (code << 3) | y1; code = (code << 3) | x2; code = (code << 3) | y2; return code; } int validpoint (int x, int y) { if (x < 0 || y < 0) return 0; if (x >= n || y >= m) return 0; if (zad[y][x] == '#') return 0; return 1; } int validstate (int x1, int y1, int x2, int y2) { if (!validpoint (x1, y1)) return 0; if (!validpoint (x2, y2)) return 0; /* Also forbid suicidal moves. */ if (x1 == x2 && (y1 == y2 + 1 || y2 == y1 + 1)) return 0; if (y1 == y2 && (x1 == x2 + 1 || x2 == x1 + 1)) return 0; return 1; } void addmove (struct graph *g, int v, int x1, int y1, int x2, int y2) { int u = encode (x1, y1, x2, y2), d; if (!validstate (x1, y1, x2, y2)) return; d = g->verts[v].deg; g->verts[v].sous[d] = u; g->verts[v].deg++; } void genstate (struct graph *g, int x1, int y1, int x2, int y2) { int v = encode (x1, y1, x2, y2); if (!validstate (x1, y1, x2, y2)) return; g->verts[v].valid = 1; g->verts[v].match = -1; addmove (g, v, x1 + 1, y1, x2, y2); addmove (g, v, x1, y1 + 1, x2, y2); addmove (g, v, x1 - 1, y1, x2, y2); addmove (g, v, x1, y1 - 1, x2, y2); addmove (g, v, x1, y1, x2 + 1, y2); addmove (g, v, x1, y1, x2, y2 + 1); addmove (g, v, x1, y1, x2 - 1, y2); addmove (g, v, x1, y1, x2, y2 - 1); } struct graph *read_graph(int m, int n, int *init) { int nv = n << 9, y1, x1, y2, x2, ix[2], iy[2], a; struct graph *ret = (graph *)calloc (1, sizeof (struct graph) + nv * sizeof (struct vert)); ret->n = nv; for (y1 = 0; y1 < m; y1++) scanf ("%s", zad[y1]); for (y1 = 0; y1 < m; y1++) for (x1 = 0; x1 < n; x1++) { for (x2 = x1 + 1; x2 < n; x2++) genstate (ret, x1, y1, x2, y1); for (y2 = y1 + 1; y2 < m; y2++) for (x2 = 0; x2 < n; x2++) genstate (ret, x1, y1, x2, y2); } a = 0; for (y1 = 0; y1 < m; y1++) for (x1 = 0; x1 < n; x1++) if (zad[y1][x1] == 'P') { ix[a] = x1; iy[a] = y1; a++; } if (a != 2) abort (); *init = encode (ix[0], iy[0], ix[1], iy[1]); return ret; } int explore (struct graph *g, int v, int from, int mark) { int i, t; if (g->verts[v].mark == mark) return -1; g->verts[v].mark = mark; g->verts[v].from = from; if (g->verts[v].match == -1) return v; if (g->verts[v].match != from) return explore (g, g->verts[v].match, v, mark); for (i = 0; i < g->verts[v].deg; i++) { if (g->verts[v].sous[i] == from) continue; t = explore (g, g->verts[v].sous[i], v, mark); if (t != -1) return t; } return -1; } void swapmatch (struct graph *g, int t) { int into = 1, last; while (1) { last = t; t = g->verts[t].from; if (t == -2) return; if (into) { g->verts[last].match = t; g->verts[t].match = last; } else g->verts[t].match = -1; into = !into; } } void imprpath (struct graph *g, int v, int mark) { int t; if (g->verts[v].match == -1) g->verts[v].match = -2; t = explore (g, v, -2, mark); if (g->verts[v].match == -2) g->verts[v].match = -1; if (t == -1) return; swapmatch (g, t); } int main(void) { int i, init_state, mark; struct graph *gph; while (1) { if (scanf ("%d%d", &m, &n) != 2) return 0; gph = read_graph (m, n, &init_state); if (!gph->verts[init_state].valid) { /* This happens when Alice may take the other piece directly. */ printf ("Alice wins.\n"); free (gph); continue; } mark = 1; for (i = 0; i < gph->n; i++) if (gph->verts[i].match == -1) imprpath(gph, i, mark++); if (gph->verts[init_state].match != -1) imprpath(gph, init_state, mark); if (gph->verts[init_state].match != -1) printf ("Alice wins.\n"); else printf ("Bob wins.\n"); free (gph); } }