336
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șir(0 < k ≤ r ≤ 100) - elementele submulțimii
rsub 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șir
- elementele submulțimii
rsub 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
#include <bits/stdc++.h>
using namespace std;
int n, r, k;
int a[100];
int main()
{
cin >> n >> k >> r;
cout << n / 2 << endl;
int sum = 0;
for(int i = k * (k - 1) / 2; i < k * (k - 1) / 2 + k; ++i)
sum += i;
for(int i = r * (r - 1) / 2; i < r * (r - 1) / 2 + r; ++i)
sum += i;
cout << sum / (k + r) << endl;
for(int i = r * (r - 1) / 2; i < r * (r - 1) / 2 + r; ++i)
a[i - r * (r - 1) / 2 + 1] = i;
for(int i = 1, j = 2, z = r, fr = 1 ; fr <= r; fr++, i+=2, j+=2, z--){
if(fr <= r)
cout << a[i] << ' ', fr++;
if(fr <= r)
cout << a[j] << ' ', fr++;
if(fr <= r)
cout << a[z] << ' ';
}
return 0;
}
Comentarii