Advertisement
Guest User

Untitled

a guest
Dec 3rd, 2016
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.98 KB | None | 0 0
  1. vector <long long> v;
  2. long long p[100 * 1000 + 100];
  3.  
  4. int lastDigitsFactorial(std::string N, int k)
  5. {
  6.     using namespace std;
  7.    
  8.     p[0] = 1;
  9.     for (int i = 1; i < 100 * 1000 + 10; i++)
  10.         p[i] = (2 * p[i - 1]) % (100 * 1000);
  11.    
  12.    
  13.     long long n = stoll(N);
  14.     v.push_back(1);
  15.     long long t2 = 0, l = 1;
  16.     for (long long i = 1; i <= 100 * 1000; i++)
  17.     {
  18.         long long j = i;
  19.         while (j % 2 == 0)
  20.         {
  21.             t2++;
  22.             j /= 2;
  23.         }
  24.         while (j % 5 == 0)
  25.         {
  26.             t2--;
  27.             j /= 5;
  28.         }
  29.         l = (long long)(l * j) % (long long)(100 * 1000);
  30.         v.push_back((long long)(l * p[t2]) % (long long)(100 * 1000));
  31.     }
  32.    
  33.     long long ans = 1;
  34.     for (long long i = 0; i < int(n / (100 * 1000)); i++)
  35.         ans = (long long)(ans * v[100 * 1000]) % (long long)(100 * 1000);
  36.     ans = (long long)(ans * v[n % (100 * 1000)]) % (long long)(100 * 1000);
  37.    
  38.     return ans;
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement