Atenție! Aceasta este o versiune veche a paginii., scrisă la 2019-05-04 17:00:28.000.
Revizia anterioară   Revizia următoare  

Fișierul intrare/ieșire virus.in, virus.out Sursă ONI 2019 baraj gimnaziu
Autor Marinel Șerban Adăugată de avatar Asgari_Armin ARMIN ASGARI Asgari_Armin
Timp de execuție pe test 0.1 sec Limită de memorie 8192 KB
Scorul tău N/A Dificultate stea de rating de tip fullstea de rating de tip fullstea de rating de tip halfstea de rating de tip emptystea de rating de tip empty
open book Poți vedea testele pentru această problemă accesând atașamentele .

Virus (baraj gimnaziu)

Există azi mulți viruși care acționează în diferite moduri asupra informației stocate într-un calculator. Printre aceștia există și unii mai puțin periculoși, care se mulțumesc doar să simuleze o anumită alterare a informației. Să presupunem că dorim să scriem un astfel de virus care acționează doar asupra informației de tip text de pe ecranul calculatorului. În mod text, ecranul este constituit din n linii pe fiecare aflându-se câte m caractere. Caracterele sunt reținute în memoria calculatorului prin codul lor ASCII, reprezentat în binar pe 8 biți. Biții sunt numerotați de la 0 la 7 de la dreapta către stânga, cel din stânga fiind cel mai semnificativ bit.
La fiecare secundă, virusul transformă simultan toate caracterele de pe ecran după următoarele reguli:
1. virusul afectează doar caracterele ale căror coduri nu are toți biții egali cu 0; caracterul al cărui cod are toți biții egali cu 0 se numește inatacabil;
2. se determină caracterele ale căror coduri au număr maxim de biți egali cu 1; pentru fiecare astfel de caracter cei mai semnificativi 2 biți egali cu 1 din cod se transformă în 0, iar dacă nu are în cod 2 biți egali cu 1, se va transforma în 0 singurul bit 1 existent;
3. pentru toate celelalte caractere atacabile, bitul cel mai puțin semnificativ egal cu 0 al codului se transformă în 1;
4. unele caractere pot genera erori în execuția virusului deoarece transformând succesiv codurile lor se pot obține cicluri; aceste caractere au codurile ASCII 1, 3, 7, 15, 31, 63, 127 și virusul le transformă imediat în 0 (adică devin inatacabile), indiferent când un astfel de caracter apare (adică dacă el există inițial pe ecran sau apare după o transformare).h2. Date de intrare

Cerință

Cunoscând configurația inițială a ecranului, scrieți un program care să rezolve următoarele două cerințe:
1. determină numărul de caractere inatacabile obținute în prima secundă (adică după prima transformare);
2. determină după câte secunde toate caracterele de pe ecran sunt inatacabile.

Date de intrare

Fișierul de intrare virus.in conține pe prima linie două numere naturale separate printr-un spațiu n m, reprezentând dimensiunile ecranului. Pe fiecare dintre următoarele n linii se află câte m caractere, reprezentând caracterele existente inițial pe ecran. Ultima linie a fișierului de intrare conține cerința care trebuie să fie rezolvată (1 sau 2).

Date de ieșire

Fișierul de ieșire virus.out va conține o singură linie pe care va fi scris un număr natural, reprezentând răspunsul la cerința specificată în fișierul de intrare.

Restricții

  • 1 ≤ n, m ≤ 100
  • Caracterele aflate inițial pe ecran au coduri cuprinse între 32 și 127.
  • Pentru teste valorând 30 de puncte, cerința este 1.

Exemplu

virus.in virus.out
This is some
text written on
multiple lines.
This is another
text written on
multiple lines.

Explicație

...

Trebuie să te autentifici pentru a trimite soluții. Click aici

Indicii de rezolvare

Arată 4 categorii