Problem:
Score : 100 points

Problem Statement

How many multiples of d are there among the integers between L and R (inclusive)?

Constraints

All values in input are integers.

1 \leq L \leq R \leq 100

1 \leq d \leq 100

Input

Input is given from Standard Input in the following format:

L R d

Output

Print the number of multiples of d among the integers between L and R (inclusive).

Sample Input 1

5 10 2

Sample Output 1

3

Among the integers between 5 and 10, there are three multiples of 2: 6, 8, and 10.

Sample Input 2

6 20 7

Sample Output 2

2

Among the integers between 6 and 20, there are two multiples of 7: 7 and 14.

Sample Input 3

1 100 1

Sample Output 3

100

Solution in PyPy3 (7.3.0) (judge verdict: Runtime Error)

N = int(input())
X = str(input())

def popcount(X):
  counter = 0
  for i in range(N):
    if X[i] == "1":
      counter += 1
  return counter

    
def converter(N,X):
  conv_counter = 0
  for i in range(N):
    conv_counter += int(X[i])*(2**((N-1)-i))
  return conv_counter

def decorder(N,X):
  #10進数のXをＮ桁の2進数に直す
  reslist = []
  for i in range(N):
    p = int(X) // 2**((N-1)-i)
    reslist.append(str(p))
    X = str(int(X) - p*(2**((N-1)-i)))
  #print("reslist",reslist)
  res = "".join(reslist)
  return res

def bit_change(X,P):
  LISTX = list(X)
  change_num = abs(int(X[P])-1)
  LISTX[P] = str(change_num)
  X = "".join(LISTX)
  return X


def main(N,X):
  for i in range(N):
    result = 0
    #二進数のBIT変換
    target = bit_change(X,i)
    #print("target",target)
    
    if converter(N,target) == 0:
      flag = 0
    else:
      flag = 1
    #print("flag:",flag)
    
    while flag == 1:
      result += 1
      pop_count = popcount(target)
      conv = converter(N,target)
      target_10 = conv % pop_count
      
      if target_10 == 0:
        flag = 0
        
      else:
        target = decorder(N,target_10)
	  
    print(result)
    
main(N,X)
    
#print(decorder(N,X))