RozKoduj się!

Zapraszam do doskonalenia swoich koderskich umiejętności.

Nie jesteś zalogowany na forum.

#1 2015-08-25 20:04:41

Hiraki
Administrator
Dołączył: 2015-08-23
Liczba postów: 7
Windows 8.1Chrome 44.0.2403.157

[C++] Dwie cyfry silni

Niech n będzie nieujemną liczbą całkowitą. Liczbę n! (czytaj n-silnia) definiuje się następująco. Jeśli n ≤ 1, to n! = 1. Dla n > 1, n! jest równe iloczynowi wszystkich liczb od 1 do n, czyli n! = 1 * 2 * ... * n. Na przykład 4! = 1*2*3*4 = 24.

Zadanie
Napisz program, który:
wczyta ze standardowego wejścia nieujemną liczbę całkowitą n,
policzy cyfrę dziesiatek oraz cyfrę jedności w zapisie dziesiętnym liczby n!,
wypisze wynik na standardowe wyjście.
Wejście
W pierwszej linii wejścia znajduje się jedna liczba całkowia D (1≤D≤30), oznaczjąca liczbę przypadków do rozważenia. Opis każdego przypadku składa się z jednej linii, w której znajduje się jedna nieujemna liczba całkowita n (0 ≤ n ≤ 1 000 000 000).

Wyjście
Dla każdego przypadku z wejścia. Twój program powinien wypisać w osobnej linii dokładnie dwie cyfry (oddzielone pojedynczą spacją): cyfrę dziesiątek i cyfrę jedności liczby n! zapisanej w systemie dziesiętnym.

Przykład
Dla danych wejściowych:
2
1
4
poprawną odpowiedzią jest:
0 1
2 4
źródło: http://pl.spoj.com/problems/FCTRL3/

Kod:

#include <iostream>

using namespace std;

long long liczsilnie(int n);
int main()
{
    unsigned int n;
    cin >> n;
    unsigned int* tab=new unsigned int[n];
    
    for(int i=0; i<n; i++)
    {
            cin >> tab[i];
            tab[i]=liczsilnie(tab[i]);
    }
    for(int i=0; i<n; i++)
    {
            cout << ((tab[i]/10)%10) << " " << (tab[i]%10) << endl;
    }
    
    system("PAUSE");
    return 0;
}

long long liczsilnie(int n)
{
     long long s=1;
     for(int i=1; i<n; i++)
     {
             s*=(i+1);
     }
     return s;
}


*Działa jednakże przekracza limit czasu na wykonanie.

Offline

Użytkowników czytających ten temat: 0, gości: 1
[Bot] ClaudeBot

Stopka

Forum oparte na FluxBB

Darmowe Forum