ConcursC++17

fractie

Gigel a învățat să lucreze cu fracții zecimale neperiodice, periodice simple, respectiv periodice mixte și să transforme o fracție zecimală în fracție ordinară. El știe că există fracții zecimale și fracții ordinare echivalente.
Gigel are de transformat o fracție zecimală în fracție ordinară scriind numitorul fracției în una din următoarele două forme:

  1. o cifră 11 care poate fi urmată sau nu de 00-uri;
  2. una sau mai multe cifre de 99 urmate eventual de 00-uri.

Pot exista mai multe soluții, din care o va alege pe cea cu număr minim de cifre la numitor.

6,2500=62 50010 000=6,25=625100=6,250=6 2501 000\text{6,2500} = \frac{62\ 500}{10\ 000} = \text{6,25} = \frac{\textcolor{red}{\textbf{625}}}{\textcolor{red}{\textbf{100}}} = \text{6,250} = \frac{6\ 250}{1\ 000}
0,37(547)=37 51099 900=0,3(754)=3 7519 990=0,3(754754)=3 754 7519 999 990\text{0,37(547)} = \frac{37\ 510}{99\ 900} = \text{0,3(754)} = \frac{\textcolor{red}{\textbf{3\ 751}}}{\textcolor{red}{\textbf{9\ 990}}} = \text{0,3(754754)} = \frac{3\ 754\ 751}{9\ 999\ 990}

Pentru fiecare din cele două exemple, oricare ar fi fracția zecimală dată, Gigel elev silitor va alege fracția ordinară echivalentă îngroșată.

Cerință

Scrieți un program care citește o fracție zecimală strict pozitivă și afișează numărătorul și numitorul unei fracții ordinare echivalente, având numitorul în una din formele 1 sau 2 și număr minim de cifre.

Date de intrare

Fișierul fractie.in conține pe o singură linie un șir de maxim 8080 de caractere reprezentând fracția zecimală. Caracterele pot fi: cifre, eventual virgula zecimală , și parantezele ( respectiv ).

Date de ieșire

Fișierul fractie.out va conține două linii. Pe prima linie se va scrie numărătorul fracției, pe a doua linie se va scrie numitorul fracției.

Restricții și precizări

  • Partea întreagă a unei fracții zecimale este formată din cel puțin o cifră.
  • Șirul citit poate conține cel mult 7777 cifre și reprezintă o fracție zecimală corectă.
  • Pentru numărător corect se acordă 40%40\% din punctaj, iar pentru numitor corect 60%60\%. Pentru a primi punctaje parțiale, în fișierul de ieșire trebuie să existe 2 numere!

Exemplul 1

fractie.in

0,3(754754)

fractie.out

3751
9990

Explicație

0,3(754754)=0,3(754)=37519990\text{0,3(754754)} = \text{0,3(754)} = \frac{3751}{9990}

Exemplul 2

fractie.in

6,230000

fractie.out

623
100

Explicație

6,230000=6,23=623100\text{6,230000} = \text{6,23} = \frac{623}{100}

Sursă și autori

ONI 2010, clasele 8. Szabo Zoltan.

Enunț din Kilonova, sub licența CC-BY-NC-SA-4.0, conform politicii sursei. Adaptări de prezentare și tipografie. Exemplele, formulele și figurile originale sunt păstrate.

RÂNDUL TĂU

Trimite o soluție

Editor de cod

Setul original de teste și regulile de punctare sunt în curs de verificare. Trimiterea pentru evaluare va fi disponibilă după această verificare.

Se verifică autentificarea…

Un pas, apoi următorul.Înapoi sus ↑