Informatică, întrebare adresată de laurstefan2002, 8 ani în urmă

Problema #2999:
Pentru un număr natural n se generează submulțimile de numere naturale de forma {0} {1, 2} {3, 4, 5} {6, 7, 8, 9} ... unde ultima submulțime are n elemente.

Cerință
Scrieți un program care citește de la tastatură trei numere naturale n, k și r și afișează:

câte submulțimi sunt formate dintr-un număr de elemente pare(cardinalul submulțimilor este un număr par)
media aritmetică a elementelor din submulțimile cu număr de ordine k și r (0 < k ≤ r ≤ 100)
elementele submulțimii r sub forma: primul, al doilea, ultimul, al treilea, al patrulea, penultimul, etc.
Date de intrare
Programul va citi de la tastatură n, k și r numere naturale.

Date de ieșire
Se afișează fiecare pe câte o linie :

numărul de submulțimi cu număr de elemente pare
media aritmetică a numerelor din submulțimile k și r
elementele submulțimii r sub forma: primul, al doilea, ultimul, al treilea, al patrulea, penultimul, etc.
Restricții și precizări
1 ≤ k ≤ r ≤ n ≤ 100

Exemplu
Date de intrare

10 5 7
Date de ieșire

5
19
21 22 27 23 24 26 25


boiustef: iau 80, nu trec un test si nu văd ce nu acoper...
boiustef: este 100 ...
laurstefan2002: Da e 100p. Multumesc!
boiustef: cu plăcere, dacă apar întrebăti.. , eu sunt aici :)))
laurstefan2002: Sigur

Răspunsuri la întrebare

Răspuns de boiustef
7

#include <iostream>

using namespace std;

int main()

{

   int n,k,r,line,sk, sr, primulk, ultimulk, cardpar, primulr,ultimulr;

   cin >> n >> k >> r;

   cardpar=n/2;

   if (k%2==0) primulk=(k/2)*(k-1);

   else primulk=((k-1)/2)*k;

   ultimulk=(k-1)+primulk;

   if (k%2==0)

       sk=(k/2)*(primulk+ultimulk);

   else sk=((primulk+ultimulk)/2)*k;

   if (r%2==0) primulr=(r/2)*(r-1);

   else primulr=((r-1)/2)*r;

    ultimulr=(r-1)+primulr;

   if (r%2==0)

       sr=(r/2)*(primulr+ultimulr);

   else sr=((primulr+ultimulr)/2)*r;

   cout << cardpar << endl;

   cout << (sk+sr)/(k+r) << endl;

   while (primulr<ultimulr)

   {

       cout << primulr << " ";

       ++primulr;

       if (primulr<ultimulr)

           cout << primulr << " ";

       cout << ultimulr << " ";

       ++primulr; --ultimulr;

   }

   if (primulr==ultimulr) cout << primulr;

}

Alte întrebări interesante