Advertisement
zvoulgaris

Trailing Zeros

Jul 7th, 2020
2,682
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Julia 0.52 KB | None | 0 0
  1. # Trailing Zeros drill
  2.  
  3. function bin(x::Integer)::String
  4.     if x < 0; return string(-parse(Int64, bin(-x))); end
  5.     if x == 0; return "0"; end
  6.     L = log(2, x)
  7.     n = ceil(Int64, L)
  8.     if L == n; n += 1; end
  9.     Y = Array{Int8}(undef, n)
  10.  
  11.     for i = n:-1:1
  12.         x_ = div(x, 2)
  13.         Y[i] = x - 2x_
  14.         x = x_
  15.     end
  16.  
  17.     return join(Y)
  18. end
  19.  
  20. function main1(x::Integer)::Int64
  21.     b = bin(x)
  22.     c = 0
  23.  
  24.     for i = length(b):-1:1
  25.         b[i] == '0' ? c += 1 : break
  26.     end
  27.  
  28.     return c
  29. end
  30.  
  31. function main2(x::Integer)::Int64
  32.     c = 0
  33.     d = 1
  34.  
  35.     for i = 1:floor(Int64, log(2,x))
  36.         d *= 2
  37.         x % d == 0 ? c += 1 : break
  38.     end
  39.  
  40.     return c
  41. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement