Challenge: Sherlock and Divisors

Subdomeniu: Fundamentals (fundamentals)

Scor cont: 30.0 / 30

Submission status: Accepted

Submission score: 1.0

Submission ID: 464726814

Limbaj: python3

Link challenge: https://www.hackerrank.com/challenges/sherlock-and-divisors/problem

Cerinta

Watson gives an integer $N$ to Sherlock and asks him: What is the number of divisors of $N$ that are divisible by `2`?.    

**Input Format**  
First line contains $T$, the number of testcases. This is followed by $T$ lines each containing an integer $N$.   

**Output Format**  
For each testcase, print the required answer in one line.      

**Constraints**   
$1 \le T \le 100$  
$1 \le N \le 10^9$  

**Sample Input**  

	2
    9
    8
    
**Sample Output**   

	0
    3
    
**Explanation**    
9 has three divisors 1, 3 and 9 none of which is divisible by 2.    
8 has four divisors 1,2,4 and 8, out of which three are divisible by 2.

Cod sursa

#!/bin/python3

import math
import os
import random
import re
import sys

def divisors(n):
    count = 0
    for i in range(1,int(math.sqrt(n))+1):
        if n%i==0 and i%2==0:
            # i is even
            count+=1
        if n%(n//i)==0 and (n//i)%2==0:
            # n//i is even and n's factor
            count+=1
        if i==n//i and i%2==0 and n%i==0:
            # if i is sqrt reduce by 1
            count-=1
    return count
if __name__ == '__main__':
    fptr = open(os.environ['OUTPUT_PATH'], 'w')

    t = int(input().strip())

    for t_itr in range(t):
        n = int(input().strip())

        result = divisors(n)

        fptr.write(str(result) + '\n')

    fptr.close()
HackerRank Fundamentals – Sherlock and Divisors