Rezolvare PBinfo #3447

Decorative Icon Problema: Partit / 3447

Decorative IconAutor: Darius

O partiție a unui număr natural n se definește ca o mulțime ordonată de numere naturale nenule (p1 , p2, … , pk) ce conține cel puțin două elemente, îndeplinind condiția: p1 +p2 +...+pk=n.

Să considerăm pentru un număr natural n toate partițiile luate în ordine lexicografică.

De exemplu, pentru numărul natural n=4 există 7 partiții. Le scriem în ordine lexicografică într-o listă pe care o vom numi în continuare tabel lexicografic.

Nr. ordine Partiție
1 1 1 1 1
2 1 1 2
3 1 2 1
4 1 3
5 2 1 1
3 2 2
7 3 1
Cerința

Cunoscând valoarea numărului natural n:

  1. pentru un număr k dat, să se tipărească partiția de pe poziția k din tabelul lexicografic.
  2. pentru o partiție dată, să se calculeze numărul de ordine a ei din tabelul lexicografic
Date de intrare

Fișierul de intrare partit.in conține pe prima numărul c, reprezentând cerința de rezolvat. Dacă c=1, se va rezolva cerința 1, iar dacă c=2, se va rezolva cerința 2.

Pe linia a doua se găsește valoarea lui n – numărul pe care trebuie să îl descompunem.

Pe linia a treia, în funcție de valoarea lui c, putem avea

  • dacă c=1, pe linia 3 se găsește un număr natural k, reprezentând un număr de ordine,
  • dacă c=2, pe linia 3 se găsesc numere naturale separate prin câte un spațiu, reprezentând o partiție a numărului n.
Date de ieșire

Fișierul de ieșire partit.out va avea următorul conținut în funcție de valoarea lui c:

  • dacă c=1, pe prima linie se va tipări partiția cu numărul k în ordine lexicografică, numerele vor fi separate prin câte un spațiu;
  • dacă c=2, pe prima linie se va tipări numărul de ordine k al partiției citite.
Restricții și precizări
  • 1 < n < 10 000
  • 0 < k < 1017 (indiferent dacă este cazul c=1 sau c=2)
  • pentru teste în valoare de 18 puncte avem n ≤ 20
  • pentru alte teste în valoare de 36 de puncte avem n < 10 000 și k ≤ 1 000 000
  • pentru alte teste în valoare de 18 puncte avem k ≤ 2 000 000 000
  • pentru toate testele din fișierele de intrare există soluție
  • în concurs s-au acordat 10 puncte din oficiu. Pe site se acordă 10 puncte pentru exemple.
Exemplul 1

partit.in

1
4
5

partit.out

2 1 1
Exemplul 2

partit.in

2
21
1 2 3 4 5 6

partit.out

375776

Decorative Icon Explică rezolvarea folosind Inteligența Artificială

Folosește modelul nostru de AI special antrenament pentru a rezolva problemele de pe PBinfo! În baza creditelor AI primești explicații pentru probleme, pe care le alegi și le rulezi exact atunci când dorești, la un singur click distanță! Află mai multe informații:

👉 Achiziționează credite AI
Andrei Frîntu
Andrei Frîntu

Fondatorul platformei - mentor Academia

LinkedIn Instagram GitHub
© Copyright 2026 - CodulLuiAndrei.ro - Toate drepturile sunt rezervate