Răspuns :
Răspuns:
#include <iostream>
using namespace std;
int main(){
int n;
cin >> n;
int d2 = 0, d5 = 0, p = 1;
for(int i = 1 ; i<=n ; ++i)
{
int m = i;
while(m % 5 == 0)
m /= 5, d5++;
while(m % 2 == 0)
m /= 2, d2++;
p = (p * m) % 10;
}
int k = d2-d5;
for(int i = 1 ; i<=k ; ++i)
p = (2*p) % 10;
cout << p;
return 0;
}
Explicație:
- Numarul de zerouri de la sfarsitul lui n! este egal cu numarul de perechi 2*5.
- Numarul de 2 (d2) din n! este mai mare decat numarul de 5 (d5) din n!
- Se elimina din fiecare termen al produsului divizorii 2 si 5, iar la sfarsit numarul se reface prin inmultirile cu 2 de (d2 - d5) ori
- (p1 * p2 * p3 * ....* pk) % 10 = ((((p1 % 10) * p2) % 10) *....) * pk) % 10
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, nu ezitați să ne contactați. Ne bucurăm să vă revedem și vă invităm să ne adăugați în lista de favorite!