Advertisement
Guest User

Trailing Zeros

a guest
Aug 26th, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.13 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<iostream>
  3.  
  4. using namespace std;
  5. #define ll long long
  6.  
  7. //EFFICIENT CODE FOR SEARCHING PRIME
  8. #define MAX 1000000+7
  9. bool a[MAX+10];
  10. ll pr[MAX],pi;
  11.  
  12. void civ()
  13. {
  14.     ll i,j,k;
  15.     pr[pi++]=2;
  16.     for(i=4;i<=MAX;i+=2) a[i]=1;
  17.     for(i=3;i<=MAX;i+=2)
  18.     {
  19.         if(a[i]==0)pr[pi++]=i;
  20.         if(i<=1000)//1000 is sq.root of MAX
  21.         if(a[i]==0)
  22.         {
  23.         //pr[pi++]=i;
  24.         for(j=i*i;j<=MAX;j+=2*i) a[j]=1;
  25.         }
  26.     }
  27.     //printf("%d",pi);
  28.     //for(i=0;i<pi;i++)
  29.     //printf("%d ",pr[i]);
  30. }
  31.  
  32. ll divcount(ll n)
  33. {
  34.     ll divcnt=1;
  35.     for(ll i=0;pr[i]*pr[i]<=n;i++)
  36.     {
  37.         ll cou=0;
  38.         if(n%pr[i]==0)
  39.         {
  40.             while(n%pr[i]==0)
  41.             {
  42.                 n/=pr[i];
  43.                 cou++;
  44.             }
  45.         }
  46.         divcnt*=cou+1;
  47.     }
  48.     if(n>1)
  49.         divcnt*=2;
  50.     return divcnt;
  51.  
  52. }
  53.  
  54. int main()
  55. {
  56.     civ();
  57.     ll n,t,cs;
  58.     scanf("%lld",&t);
  59.     for(cs=1;cs<=t;cs++)
  60.     {
  61.         scanf("%lld",&n);
  62.         ll res=divcount(n);
  63.         printf("Case %lld: %lld\n",cs,res-1);
  64.  
  65.     }
  66.  
  67.  
  68.     return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement