fbpx

Problema #2999 – submultimi_2 – Rezolvari PBInfo

de Mihai-Alexandru

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
#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

S-ar putea sa iti placa