2423 afișări Negreanu-Maior Lucia (lanteamlucia) 30.10.2018 www.pbinfo.ro
Etichete: nicio etichetă

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 număr natural se numeşte “număr xyz” dacă are x cifre, prima cifră a sa este egală cu y şi următoarele cifre sunt egale cu z. Scrieţi un program care să determine “numărul 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!

https://academyitlan.wordpress.com/2018/10/30/despre-o-problema-frumoasa-de-concurs/


2423 afișări Negreanu-Maior Lucia (lanteamlucia) 30.10.2018 www.pbinfo.ro