Diferente pentru fmi-no-stress-3/solutii intre reviziile #10 si #9

Nu exista diferente intre titluri.

Diferente intre continut:

h2. 'Captcha':problema/captcha
Transformam imaginea intr-o matrice de 0 si 1 unde 0 corespunde unui pixel alb si 1 unui pixel colorat.
 
== code(c++) |
FILE *f = fopen("captcha.in", "rb");
 
fseek(f, 54, SEEK_SET); // sarim peste headere pt ca nu prezinta interes
 
for (int i=15; i>=0; --i) //imaginea este reprezentata invers pe verticala
  for (int j=0; j<64; ++j) {
    fscanf(f, "%c%c%c", &b, &g, &r);
    A[i][j] = (b != 0xff || g != 0xff || r != 0xff);
  }
 
fclose(f);
==
 
Apoi facem pattern matching pe cifre. Dimensiunile mici ne permit sa facem asta intr-o maniera brut-force.
 
== code(c++) |
for (int i=0; i<16; ++i)
  for (int j=0; j<64; ++j)
    for (int cif=0; cif<10; ++cif)
    {
      ok = 1;
      for (int p=0; p<5; ++p)
        for (int q=0; q<5; ++q)
          ok &= A[i+p][j+q] == cifra[p][q];
      if (ok) {
        sol += cif;
        break;
      }
    }
==
 
h2. 'Ubercool':problema/ubercool
Este clar ca exponentul unui număr de forma $a^b^$, unde $a$ este prim şi $b$ este mai mare ca $2$, nu poate depăşi 60, deoarece $2^60^ > 10^18^$, iar baza nu depăşeşte $10^9^$. Atunci putem fixa exponentul, iar pentru un exponent fixat, trebuie sa calculam radical de ordinul respectiv din numărul iniţial. Daca acesta este un întreg, şi este şi prim, răspunsul este afirmativ. Daca am parcurs toţi exponenţii şi nu am găsit un radical întreg şi prim, răspunsul este negativ.

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.