Sumy prefiksowe


Teoria
Obliczanie sum elementów w przedziałach

Pomysł polega na użyciu sum prefiksowych p0, p1, p2 ... pn. Są to kolejne sumy 0, 1, 2, ... n początkowych elementów tablicy.

Suma prefiksowa jest to suma danej ilości początkowych elementów tablicy.

Żeby ją zastosować, potrzebujemy dodatkowej tablicy. Nazwijmy ją sum_prefiksowa.
1. int sum_pref[n+1];
Zauważmy, że nowa tablica jest o jeden element większa od pierwszej. Kolejnym krokiem jest takie wypełnienie tej tablicy:

1. sum_prefiksowa[0] = 0;
2. for(int i=0; i < n; ++i)
3. sum_pref[i+1] = sum_pref[i] + t[i];

i

0

1

2

3

4

5

6

7

8

9

10

t[i]

18

11

6

-2

12

-19

-4

-16

8

-17

sum_pref[i]

0

18

29

35

33

45

26

22

6

14

-3



Ćwiczenia z rozwiązaniami
Napisz program ...

  • Napisz program, który oblicza pole prostokąta. Wartości boków a i b są typu float i należy je wprowadzić z klawiatury. Wynik działania programu należy wyprowadzić na ekran komputera.
  • Napisz program, który wyświetla na ekranie komputera wartość predefiniowanej stałej PI=3,14. Należy przyjąć format wyświetlania tej stałej z dokładnością do trzech miejsc po przecinku.
  • Napisz program, który wyświetla na ekranie komputera pierwiastek kwadratowy z wartości predefiniowanej PI = 3.14 z dokładnością do czterech miejsc po przecinku.
  • Napisz program, który oblicza wynik dzielenia całkowitego bez reszty dla dwóch liczb całkowitych a = 37 i b = 11.
    Zastosuj operator // (operator dzielenia bez reszty), który wykonuje całkowitą operację dzielenia dwóch liczb całkowitych. Na przykład w języku F# w przypadku zastosowania operatora dzielenia / dla liczb całkowitych reszta wyniku jest pomijana (tak samo jest w niektórych językach imperatywnych: C/C++ i Java).
  • Napisz program, który oblicza resztę z dzielenia całkowitego dwóch liczb całkowitych a = 37 i b = 11.
    Należy zastosować operator reszty z dzielenia całkowitego modulo, który oznaczamy w języku Python jako %. Podobnie jak w językach imperatywnych C/C++ i Java, operator ten umożliwia uzyskanie tylko reszty z dzielenia, natomiast wartość całkowita jest odrzucana.
  • Napisz program, który wczytuje imię, nazwisko, wiek oraz cenę chleba, a następnie te cztery zmienne drukuje na ekranie komputera.
  • Napisz program, w który generuje 5 liczb pseudolosowych z przedziału od 1 do 100.