Despre o problema frumoasa de concurs


In randurile urmatoare am dori sa va aratam niste solutii surprinzatoare la probleme care au fost date la concursuri (Olimpiada municipala de informatica Iasi 2013) – si nu numai.

O prima problema gasita pe pbinfo ar fi: problema XYZ (#2096)

Un numar natural se numeste “numar xyz” daca are xcifre, prima cifra a sa este egala cu y
si urmatoarele cifre sunt egale cu z. Scrieti un program care sa determine “numarul xyz” pentru x, y, z numere naturale date.

Daca se citeste atent textul se poate vedea ca numarul final care se doreste a fi format, nu va avea 3 cifre ci x cifre unde 1 <= x <= 9.

De exemplu (dam exemplul din problema), daca x = 5 numarul nostru va trebui sa aiba 5 cifre, daca y = 4 numarul nostru va avea prima cifra 4 urmata de restul 4 cifre de 3 atat cat arata z citit. De ce numarul trebuie sa contina 4 valori de z? Pentru ca din cele x cifre pe care trebuie sa le aiba numarul in total, y a ocupat o prima pozitie a numarului deci au ramas x-1 pozitii de ocupat pentru cifra z. Numarul va fi 43333.

Problema de pe site se cere rezolvata folosind fisiere – nu insistam pe acest aspect. Vrem sa evidentiem simplitatea algoritmului:

#include <fstream>

using namespace std;

ifstream cin(„xyz.in”);

ofstream cout(„xyz.out”);

int x,y,z,i;

int main() {

cin>>x>>y>>z;

cout<<y;

for (i = 1; i < x; i ++)

cout<<z;

cin.close(); cout.close();

return 0;

}

Nu cred ca se poate ceva mai simplu de atat. Nu se formeaza efectiv un numar prin inmultirea cu factorul 10 a cifrelor si deplasarea lor spre stanga. Este o altfel de rezolvare, mai transparenta si mai fluida. Cealalta solutie va lasam sa o implementati singuri.

 

Daca v-a placut articolul nostru va promitem ca vor mai fi si altele similare!

Lasă un răspuns

Completează mai jos detaliile tale sau dă clic pe un icon pentru a te autentifica:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare /  Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare /  Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare /  Schimbă )

Conectare la %s

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.