Silnia wielokrotna

Odpowiedz Nowy wątek
2011-10-29 12:51
0

Jak by ktoś mógł mi podać przykład jak oblicza się 5 2 kolejno we wzorze; bo mi nie chce wyjść 15.

Zadanie Silnie

Wartość k-tej silni wielokrotnej z liczby n (oznaczaną przez n z k wykrzyknikami) obliczamy ze wzorów n!!...! = 1, jeśli 0<=n<k, oraz n!!...! = n((n-k)!!...!), jeśli n>=k (we wszystkich wzorach występuje po k wykrzykników). Napisz program służący do obliczania wartości silni wielokrotnych.

Wejście

W pierwszej linii wejścia znajduje się jedna liczba całkowita t<=10 oznaczająca liczbę testów.
W kolejnych liniach znajdują się poszczególne testy. Każdy z nich składa się z dwóch liczb całkowitych, n oraz k (1<=n,k<=12).

Wyjście

Dla każdego testu wypisz w osobnej linii wartość k-tej silni liczby n.

Przykład

Wejście:
3
5 1
5 2
10 4

Wyjście:
120
15
60

Pozostało 580 znaków

2011-10-29 13:08
0

5!! = 5 (5 - 2)!! = 5 3 (3 - 2)!! = 5 3 1 = 15
10!!!! = 10
(10 - 4)!!!! = 10 6 (6 - 4)!!!! = 10 6 2!!!! = 10 6 1 = 60


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 2x, ostatnio: Wibowit, 2011-10-29 13:09
Ale definicje silni wielokrotnej się różnią, ta w zadaniu jest inna. - Wibowit 2011-10-29 14:43

Pozostało 580 znaków

2011-10-29 15:06
0

Otóż, coś mi słabo idzie, jak mam taką rekurencję: nie wiem czy można aby n i k było parametrami funkcji, tzn można - raczej, ale nie wiem jak by to sie miało do wzoru żeby na koniec zwracało to (n-k) oraz k w postaci niezmienionej i znowu sie wykonało az do 1 i zwróciło wartość do main.

 int silnia (int n)
{
    int licznik=0,k=0; //nie wiem jak by f. wyglądała przy dwóch parametrach więc ilość silni, k, wczytuje tutaj, a ten licznik to tylko po to aby wykonało się tylko raz.
    if (licznik==0)
       {
            cin>>k;
       }
    ++licznik;
    if (n<k && n>=0)
       return 1;
    else 
    {
        return silnia(n-k)*n; 
    }   
}

Pozostało 580 znaków

2011-10-29 15:17
0
#include <cstdio>

int main() {
    int z;
    scanf("%d", &z);
    while (z--) {
        int n, k;
        scanf("%d %d", &n, &k);
        int r = 1;
        for (int i = n; i >= k; i -= k) {
            r *= i;
        }
        printf("%d\n", r);
    }
}

"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 1x, ostatnio: Wibowit, 2011-10-29 15:19

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0