Albă ca Zăpada
şi cei n
pitici locuiau încă în căsuţa lor din pădure. Piticilor le făcuse cadou Moş Crăciun câte un număr şi fiecare pitic s-a hotărât să scrie numărul primit ca sumă de m
numere naturale.
Cerința
Dându-se cele n
numere naturale primite de pitici, să se afle, pentru fiecare pitic, cele m
numere a căror sumă este egală cu numărul primit de pitic, astfel încât cel mai mic dintre numerele din sumă să fie maxim posibil, iar diferenţa dintre cel mai mare număr din sumă şi cel mai mic să fie minimă.
Date de intrare
Programul citește de la tastatură numerele n
şi m
, iar apoi de pe a doua linie n
numere naturale, separate prin spații, reprezentând numerele primite de pitici.
Date de ieșire
Programul va afișa pe ecran, pe primele n
linii, câte m
numere, reprezentând numerele cerute pentru fiecare pitic, în ordine crescătoare.
Restricții și precizări
1 ≤ n ≤ 2017
2 ≤ m ≤ 2018
- cele
n
numere citite vor fi mai mici decât1.000.000
Exemplu
Intrare
1 2 5
Ieșire
2 3
Explicație
Avem un pitic care a primit numărul 5
şi trebuie să-l scrie ca sumă de două numere naturale : 2+3=5
. Cel mai mic dintre cele două numere este maxim (2
).
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 HappyNY2018:
#include <iostream>
using namespace std;
int n,m,i,j,x,r,c,d,e,k,j1,v[100],d1,r1,c1,q,z,u ;
char sir[128];
int main()
{
cin >> n >> m ;
for ( i=1 ; i<=n ; i++ )
{
cin >> x ;
r = x % m ;
c = x / m ;
d = m - r ;
e = c + 1 ;
k=0;
c1 = c ;
if(c1==0){k=1;v[1]=0;}
else
while( c1!=0 )
{
k++ ;
v[k] = c1 % 10 ;
c1 = c1 / 10 ;
};
q=127/(k+1);
z=127%(k+1);
u=-1 ;
for(j=1 ; j<=q ; j++)
{
for(j1=k ; j1>=1 ; j1--)
{
u++ ;
sir[u]='0'+v[j1];
}
u++ ;
sir[u]=' ' ;
}
for(j=1;j<=z;j++)
{
u++ ;
sir[u]=' ' ;
}
d1 = d / q ;
r1 = d % q ;
for ( j=1 ; j<=d1 ; j++ ) cout << sir ;
for ( j=1 ; j<=r1 ; j++ ) cout << c << " " ;
k=0;
c1 = e ;
if(c1==0){k=1;v[1]=0;}
else
while( c1!=0 )
{
k++ ;
v[k] = c1 % 10 ;
c1 = c1 / 10 ;
};
q=127/(k+1);
z=127%(k+1);
u=-1 ;
for(j=1 ; j<=q ; j++)
{
for(j1=k ; j1>=1 ; j1--)
{
u++ ;
sir[u]='0'+v[j1];
}
u++ ;
sir[u]=' ' ;
}
for(j=1;j<=z;j++)
{
u++ ;
sir[u]=' ' ;
}
d1 = r / q ;
r1 = r % q ;
for ( j=1 ; j<=d1 ; j++ ) cout << sir ;
for ( j=1 ; j<=r1 ; j++ ) cout << e << " " ;
cout << "\n" ;
}
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 #2321 HappyNY2018
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2321 HappyNY2018 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!