Având o pasiune pentru numere, Răzvan a inventat un nou joc pentru două persoane. Regulile jocului sunt simple: se aleg trei numere naturale a
, b
şi c
astfel încât a<b<c
. La fiecare pas, primul jucător adună la a
suma cifrelor lui a
, iar cel de-al doilea jucător scade din c
suma cifrelor lui c
, la pasul următor fiind luate în considerare noile valori obţinute pentru a
şi c
. Jocul se termină când, la un anumit pas, a
devine mai mare sau egal decât b
, caz în care primul jucător este declarat câştigător, sau când c
devine mai mic sau egal cu b
, situaţie în care câştigă al doilea jucător. Dacă la un pas se îndeplinesc ambele codiţii, jocul se termină la egalitate.
Cerința
Cunoscând a
, b
şi c
se cere:
a) Suma cifrelor celor trei numere.
Având o pasiune pentru numere, Răzvan a inventat un nou joc pentru două persoane. Regulile jocului sunt simple: se aleg trei numere naturale a
, b
şi c
astfel încât a<b<c
. La fiecare pas, primul jucător adună la a
suma cifrelor lui a
, iar cel de-al doilea jucător scade din c
suma cifrelor lui c
, la pasul următor fiind luate în considerare noile valori obţinute pentru a
şi c
. Jocul se termină când, la un anumit pas, a
devine mai mare sau egal decât b
, caz în care primul jucător este declarat câştigător, sau când c
devine mai mic sau egal cu b
, situaţie în care câştigă al doilea jucător. Dacă la un pas se îndeplinesc ambele codiţii, jocul se termină la egalitate.
Cerința
Cunoscând a
, b
şi c
se cere:
a) Suma cifrelor celor trei numere.
b) Valorile numerelor a
şi c
la fiecare pas al jocului, precum şi câştigătorul jocului.
Date de intrare
Fişierul de intrare numere3.in
conţine pe prima linie un număr natural p
. Pentru toate testele de intrare, numărul p
poate avea doar valoarea 1
sau valoarea 2
.
Pe a doua linie se găsesc cele trei numere naturale a
, b
şi c
descrise în enunţ.
Date de ieșire
Dacă valoarea lui p
este 1
, se va rezolva numai punctul a) din cerință.
În acest caz, în fişierul de ieşire numere3.out
se va scrie un singur număr natural s
, reprezentând suma cifrelor lui a
, b
şi c
.
Dacă valoarea lui p
este 2
, se va rezolva numai punctul b) din cerință.
În acest caz, fişierul de ieşire numere3.out
va conține mai multe linii pe care se vor găsi câte două numere naturale separate printr-un spaţiu: valorile lui a
şi c
la fiecare pas al jocului. Pe ultima linie se va găsi 1
, dacă primul jucător câştigă, 2
dacă cel de-al doilea jucător câştigă sau 0
dacă jocul se termină la egalitate.
Restricții și precizări
0 < a < b < c < 10.000.000
- Pentru rezolvarea corectă a primei cerinţe se acordă 20 de puncte, iar pentru cerința a doua se acordă 80 de puncte.
Exemplul 1:
numere3.in
1 25 51 75
numere3.out
25
Explicație
p = 1
2+5+5+1+7+5=25
Atenție! Pentru acest test se rezolvă doar cerința a)
Exemplul 2:
numere3.in
2 25 51 75
numere3.out
25 75 32 63 37 54 47 45 2
Explicație
p = 2
La cel de-al treilea pas, c
devine mai mic decât b
, jocul fiind câștigat de către al doilea jucător.
Atenție! Pentru acest test se rezolvă doar cerința b).
Exemplul 3:
numere3.in
2 25 46 75
numere3.out
25 75 32 63 37 54 47 45 0
Explicație
p = 2
La cel de-al treilea pas, a
devine mai mare decât b
, dar și c
devine mai mic decât b
. Astfel, jocul se termină la egalitate.
Atenție! Pentru acest test se rezolvă doar cerința b).
#include <bits/stdc++.h> using namespace std; ifstream fin("numere3.in"); ofstream fout("numere3.out"); int sum(int n) { int s = 0; while(n != 0) { s += n % 10; n /= 10; } return s; } int main() { int a , b , c , p; fin >> p >>a >> b >> c; if(p == 1) { fout << sum(a) + sum(b) + sum(c); } else { fout << a <<" " << c << endl; while(a < b && c > b) { a = a + sum(a); c = c - sum(c); fout << a <<" "<< c << endl; } if(a >= b && c <=b) fout << 0; else if(a >= b && c > b) fout << 1; else fout << 2; } fin.close(); fout.close(); return 0; }