Rezolvare completă PbInfo #3327 LaScoala

Cerința

Directorul unei şcoli doreşte să premieze la sfârşitul anului şcolar pe cei mai buni elevi la învăţătură. Pentru acest lucru el are de rezolvat două probleme:

1. Să determine câţi elevi vor fi premiaţi dintre cei n ( 2≤n≤700 ) elevi ai şcolii. După discuţii aprinse cu ceilalţi profesori se hotărăşte în Consiliul Profesoral ca numărul premianţilor să fie n-k , unde k este cel mai mare număr pătrat perfect mai mic strict decât n . De exemplu, pentru n=150 , k este 144 (pentru că 144=12*12 ), deci vor fi premiaţi 150- 144 = 6 elevi.
2. Pentru a fi cât mai multă linişte la premiere, în Consiliul Profesoral se ia decizia ca elevii care nu vor fi premiaţi să fie aşezaţi pe terenul de sport pe rânduri de câte p elevi (unde p*p=k ). În acest scop, directorul a numerotat elevii nepremiaţi de la 1 la k şi a hotărât ca elevii să fie aşezaţi în ordinea descrescătoare a numerelor asociate.

Scrieți un program care citește numărul de elevi din școală și afișează numărul de elevi premiați și apoi aranjarea elevilor nepremiați.

Date de intrare

Programul citește de la tastatură numărul n reprezentând numărul de elevi din școală.

Date de ieșire

Programul va afișa pe ecran numărul de elevi premiaţi și pe urmatoarele k linii o matrice kxk reprezentând modul în care vor fi așezaţi elevii nepremiaţi.

Restricții și precizări

  • 1 ≤ n ≤ 700

Exemplu

Intrare

35

Ieșire

10
25 24 23 22 21 
20 19 18 17 16 
15 14 13 12 11 
10 9 8 7 6 
5 4 3 2 1

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 LaScoala:

#include <iostream>

using namespace std;

int main()
{
    int n,p=1;
    cin>>n;
    while(p*p<n)
        p++;
    p--;
    cout<<n-p*p<<'\n';
    int val=p*p;
    for(int i=1;i<=p;i++)
    {
        for(int j=1;j<=p;j++)
        {
            cout<<val<<" ";
            val--;
        }
        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 Adresa de email.

Rezolvarea problemei #3327 LaScoala

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #3327 LaScoala 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!