👤

Cerinţa

Se citește un număr natural n. Să se determine ultima cifră nenulă din scrierea zecimală a numărului n!.
Date de intrare

Programul citește de la tastatură numărul n.
Date de ieşire

Programul afișează pe ecran numărul C, reprezentând ultima cifră nenulă din scrierea zecimală a numărului n!.
Restricţii şi precizări

1 ≤ n ≤ 1000
n! = 1 * 2 * ... * n


Exemplu

Intrare

13

Ieșire

8

Explicație

13! = 6227020800, iar ultima cifră nenulă este 8.


Răspuns :

#include <iostream>
using namespace std;

int sol(int val)
{
    switch(val) {
        case 0: return 1;
        case 1: return 1;
        case 2: return 2;
        case 3: return 6;
        case 4: return 4;
        case 5: return 2;
        case 6: return 2;
        case 7: return 4;
        case 8: return 2;
        case 9: return 8;
        default: return (sol(val / 5) * sol(val % 10) * ((val / 10 % 10 % 2) ? 4 : 6)) % 10;
    }
}

int main()
{
    int n;
    cin >> n;
    cout << sol(n) << '\n';
    return 0;
}