Ninja Competition

Easy
0/40
profile
Contributed by
77 upvotes
Asked in companies
Hexaware TechnologiesBottomline Technologies

Problem statement

Our hero Ninja is organizing a coding competition where only two teams can participate simultaneously. To make the competition interesting and fair, both the teams should have an equal number of members. As an organizer, Ninja got the task of making the two teams.

There are some conditions for creating teams. For each competition, he will be given a number ‘N’, and for each divisor ‘D’ of ‘N’ ( including 1 and ‘N’ itself ), he will add a member:

1) to the first team if ‘D’ is even.

2) to the second team if ‘D’ is odd.

Since Ninja is very busy organizing the event, he wants you to help him with the task. Your task is to tell Ninja if he can create two teams with an equal number of members.

For Example:
For ‘N’ = 10,
The divisors are:
1, 2, 5, 10.
The first team will have two members corresponding to divisors 2 and 10.
The second team will have two members corresponding to divisors 1 and 5.
So, in this case, Ninja can make two teams.
Detailed explanation ( Input/output format, Notes, Images )
Input Format:
The first line contains an integer ‘T’ which denotes the number of test cases to run.

Then the test case follows:

The first and only line of each test case contains an integer ‘N’ denoting the number given to Ninja. 
Output Format:
For each test case print ‘true’ if Ninja can make two teams of equal members with the given ‘N’, else print ‘false’.

Output for each test case will be printed in a separate line.
Note:
You are not required to print anything, it has already been taken care of. Just implement the function.
Constraints:
1 <= T <= 100
1 <= N <= 10^5

It is guaranteed that the sum of N over all test cases doesn’t exceed 10^5.

Time Limit: 1 sec
Sample Input 1:
2
7
14
Sample Output 1:
false
true
Explanation For Sample Output 1:
In test case 1:

N = 7, the divisors of 7 are 1,7.
The first team will have 0 members since there are no even divisors.
The second team will have 2 members corresponding to divisors 1 and 7.
Since the teams have a different number of members, the output will be false.

In test case 2:

N=14, the divisors of 14 are 1,2,7,14.
The first team will have 2 members corresponding to divisors 2 and 14.
The second team will have 2 members corresponding to divisors 1 and 7.
Since the teams have the same number of members, the output will be true.
Sample Input 2:
2
2
20
Sample Output 2:
true
false
Hint

Find all the divisors of ‘N’ and count the number of odd and even divisors.

Approaches (3)
Brute Force

We will iterate from 1 to ‘N’ and count the number of even divisors and odd divisors. If they are equal, we will return true, else false.

 

Algorithm:

 

  1. Declare two variables, ‘Odd_Count’ and ‘Even_Count’, and initialize them with zero.
  2. Start iterating from 1 to ‘N’.
  3. If the current iterator ( say i ) is a divisor of ‘N’ ( N % i == 0 ):
    1. If ‘i’ is odd, increase the ‘Odd_Count’ by 1.
    2. If ‘i’ is even, increase the ‘Even_Count’ by 1.
  4. If ‘Odd_Count’ is equal to ‘Even_Count’, return true, else return false.
Time Complexity

O(N), where ‘N’ is the given number.

 

We have to check every number from 1 till ‘N’ to find factors. So the time complexity will be O(N).

Space Complexity

O(1).

 

Constant extra space is used.

Code Solution
(100% EXP penalty)
Ninja Competition
Full screen
Console