Advertisement
Salman_CUET_18

Trailing zeros(I)

Aug 8th, 2019
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.14 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define M 10000009
  3. #define ll long long
  4. #define pb push_back
  5. using namespace std;
  6. bool marked[M];
  7. vector<int>primes;
  8. void sieve(void)
  9. {
  10.     for(int i = 2; i <= M; i++)
  11.         marked[i] = true;
  12.     for(int i = 3; i * i <= M; i += 2)
  13.     {
  14.         if(marked[i])
  15.         {
  16.             for(int j = i * i; j <= M; j += i + i)
  17.                 marked[j] = false;
  18.         }
  19.     }
  20.     primes.pb(2);
  21.     for(int i = 3; i <= M; i += 2)
  22.     {
  23.         if(marked[i])
  24.             primes.pb(i);
  25.     }
  26. }
  27. ll divisor_count(ll n)
  28. {
  29.     int divisors = 1, cnt;
  30.     for(int i = 0; primes[i] * primes[i] <= n; i++)
  31.     {
  32.         if(n % primes[i] == 0)
  33.         {
  34.             cnt = 1;
  35.             while(n % primes[i] == 0)
  36.             {
  37.                 n /= primes[i];
  38.                 cnt++;
  39.             }
  40.             divisors *= cnt;
  41.         }
  42.     }
  43.     if(n > 1)
  44.         divisors *= 2;
  45.     return divisors;
  46. }
  47. int main(void)
  48. {
  49.     sieve();
  50.     int t;
  51.     ll n;
  52.     cin >> t;
  53.     for(int i = 1; i <= t; i++)
  54.     {
  55.         cin >> n;
  56.         printf("Case %d: %lld\n", i, divisor_count(n)-1);
  57.     }
  58.     return 0;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement