#include int n, i, k, l; int cisl [10]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; /* Počty jednotlivých koncových cifer */ /* Pro přehlednost indexace nejsou některé položky polí používány */ int posl [10][4]={{0, 0, 0, 0}, {0, 0, 0, 0}, {6, 2, 4, 8}, {1, 3, 9, 7}, {6, 4, 6, 4}, {5, 5, 5, 5}, {6, 6, 6, 6}, {1, 7, 9, 3}, {6, 8, 4, 2}, {1, 9, 1, 9}}; int main (void) { scanf("%d", &n); for (; n; n /= 5) { k = (n + 9)/10; /* Četnost výskytu jednotlivých cifer */ l = n % 10; for (i = 1; i <= 10 ; i++) /* Pro všechna zakončení... */ { switch (i) { case 5: /* Odebereme potřebné dvojky k pětkám */ cisl[2] -= k; cisl[1] += (k+1)/2; cisl[6] += k/2; break; case 10: /* Odebereme potřebné dvojky k pětkám */ cisl[6] -= k; cisl[3] += (k+1)/2; cisl[8] += k/2; break; default: cisl[i] += k; } if (l == i) k--; } } /* Nakonec si spočteme výsledný součin */ k = 1; for (i = 2; i <= 9; i++) if (i != 5 && cisl[i]) k *= posl[i][cisl[i]%4]; printf ("%d\n", k%10); return 0; }