Jayakrishna14

trailing zeroes modified

Aug 13th, 2024
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.88 KB | Source Code | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. long countZeroes(long n){
  5.     long c = 0;
  6.     while(n){
  7.         n/=5;
  8.         c+=n;
  9.     }
  10.     return c;
  11. }
  12.  
  13.  
  14. long trailing_zeros(long n){
  15.     long i = 0, j = 9223372036854775807;
  16.     // cout << j << endl;
  17.     while(i < j){
  18.         long mid = i + (j - i)/2;
  19.         if(countZeroes(mid) < n){
  20.             i = mid + 1;
  21.         }
  22.         else{
  23.             j = mid;
  24.         }
  25.     }
  26.  
  27.     long ans = j;
  28.     i = 0;
  29.     j = 9223372036854775807;
  30.     long result;
  31.     while( i < j ) {
  32.         long mid = i + (j-i)/2;
  33.         if(countZeroes(mid) > n){
  34.             j = mid;
  35.         }
  36.         else{
  37.             i = mid + 1;
  38.         }
  39.     }
  40.  
  41.     return i-ans;
  42. }
  43.  
  44.  
  45. int main() {
  46.     int Q;
  47.     cin >> Q;
  48.     while(Q--){
  49.         long n ;
  50.         cin >> n;
  51.         cout << trailing_zeros(n) << endl;
  52.     }
  53.     return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment