Pagini recente » Diferente pentru utilizator/traian_7109 intre reviziile 58 si 57 | Diferente pentru utilizator/domistn intre reviziile 18 si 8 | Monitorul de evaluare | Diferente pentru utilizator/vlad3108 intre reviziile 44 si 41 | Diferente pentru fmi-no-stress-3/solutii intre reviziile 9 si 10
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.