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
Răspunsuri la întrebare
#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;
}