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).
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema Numere3:
#include<stdio.h>
FILE *f,*g;
int play(int a,int b,int c,int p){
int s,aux;
if(p==1){
s=0;
while(a){
s+=a%10;
a/=10;
}
while(b){
s+=b%10;
b/=10;
}
while(c){
s+=c%10;
c/=10;
}
fprintf(g,"%d
",s);
return 0;
}
fprintf(g,"%d %d
",a,b);
while(a<c&&b>c){
aux=a;
s=0;
while(aux){
s+=aux%10;
aux/=10;
}
a+=s;
aux=b;
s=0;
while(aux){
s+=aux%10;
aux/=10;
}
b-=s;
fprintf(g,"%d %d
",a,b);
}
if(a>=c)
if(b<=c)
return 0;
else
return 1;
else
return 2;
}
int main(){
int p,a,b,c,w;
f=fopen("numere3.in","r");
g=fopen("numere3.out","w");
fscanf(f,"%d%d%d%d",&p,&a,&c,&b);
fclose(f);
w=play(a,b,c,p);
if(p==2)
fprintf(g,"%d
",w);
fclose(g);
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #623 Numere3
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #623 Numere3 de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!