# Python Competitive Programming Questions for Practice

This space is to list Python competitive programming questions.

You can use questions for coding practice. As we progress, I will keep adding more coding questions here.

This initiation is a part of our FREE Python online tutorial.

### 0. Count Common Factor

This problem is asked in one of the HackerEarth contests.

Problem Statement: Little Robert likes mathematics. Today his teacher has given him two integers and asked him to find out how many integers can divide both the numbers. Would you like to help him in completing his school assignment?

Input Formatting: There are two integers, a and b as input to the program.

Output Formatting: Print the number of common factors of a and b. Both the input value should be in a range of 1 to 10^12.

Example:

```Input: 10 15
Output: 2```

Explanation: The common factors of 10 and 15 are 1 and 5. So the answer will be 2.

Python Code:

```data  = input()
li = data.split()

a = int(li)
b = int(li)

def gcd(a, b):
if (a == 0):
return b;
return gcd(b%a, a);

if (a>0 and a<(10**12+1) and b>=1 and b<(10**12+1)):
count = 1
for i in range(2, gcd(a, b)+1):
if a%i==0 and b%i==0:
count = count+1
print(count)```

Explanation:

• We are reading two integers as a single input and then splitting it using the `split()` method.
• The function `gcd()` is to find the greatest common divisor.
• To know how to find the GCD of two numbers, you can go through the function `gcd()` which uses the recursion technique. It is self-explanatory.

### 1. Does it Divide?

This problem is asked in the HackerEarth contest.

Problem Statement: Consider a permutation of numbers from 1 to N written on a paper. Let’s denote the product of its element as ‘prod’ and the sum of its elements as ‘sum’. Given a positive integer N, your task is to determine whether ‘prod’ is divisible by ‘sum’ or not.

Input Format: First input will be an integer T.  It depicts a number of test cases. Followed by the value for each test case. Each test case will contain an integer N (1<= N <=10^9). It is nothing but the length of the permutation.

Output Format: For each test case, print “YEAH” if ‘prod’ is divisible by ‘sum’, otherwise print “NAH”.

Python Code:

```testSize = int(input())
nArr=[]
for i in range(1,testSize+1):
nArr.append(int(input()))

for n in nArr:
if n>=1 and n<=(10**9):
prod = 1
sum = 0
for i in range(1, n+1):
prod = prod*i
sum = sum+i
if prod%sum==0:
print("YEAH")
else:
print("NAH")```

Input:

```2
2
3```

Output:

```YEAH
NAH```

Explanation:

• The first input is a number of test cases.
• Iterate to read all the inputs and store it in the Python list.
• For each element in the list, calculate prod and sum.
• Print “YEAH” if the prod is divided by the sum. Otherwise, print “NAH”.

### 2. Sum of sub-arrays

Python Code:

This question is actually asked in Cohesity coding round on HackerEarth.

I hope that this code is self-explanatory.

### 3. Maximum Profit by buying and selling stocks

This competitive coding question is asked in Goldman Sachs.

Problem Statement: Suppose you have given the stock prices for respective days like (100, 180, 260, 310, 40, 535, 695). The stock price for the 1st day is 100, the 2nd day it is 180 and so on. Write a Python program to determine what days the user should buy and sell the stocks to get the maximum profit.

In the above case, in the following scenarios user will get maximum profit.

• Buy stock on 1st day (100)
• Sell stock on 4th day (310)
• Buy stock on 5th day  (100)
• Sell stock on 7th day (695)

Algorithm steps:

• Find the local minima (buying stock)
• Find local maxima (selling stock)
• Repeat until all days are covered.

Python Program:

```liStocks = [100, 180, 260, 310, 40, 535, 695]

#find local minima
def findMin(liStocks):
for i, val in enumerate(liStocks[:-1]):
if val < liStocks[i+1]:
return i, val
return -1, -1

#find local maxima
def findMax(liStocks):
for i, val in enumerate(liStocks[:-1]):
if val > liStocks[i+1]:
return i, val
return i+1, liStocks[-1]

index=0
while index < len(liStocks):
i, val = findMin(liStocks[index:])
if i > -1:
index=i+index
print("bye stock on day ", index+1, val)
else:
break

i, val = findMax(liStocks[index:])
index=i+index
print("sell stock on day ", index+1, val)

if __name__ == "__main__":

Output:

```buy stock on day 1 100
sell stock on day 4 310
buy stock on day 5 40
sell stock on day 7 695```

Note: Above program may not have covered all the corner test cases.

### 15 Python Competitive Programming Questions

Here is the list of the competitive programming questions asked to the Python developer in the coding interview.

Thought…

I will keep adding more Python Competitive Programming Questions for Practice. Also, I explain each Python tutorial.

• ###### karan singh bisht
June 23, 2019 at 11:15 am

Here is the code I have written for problem 0: Count Common Factor.

```a=int(input("enter first no"))
b=int(input("enter seconde no"))
count=0
if a&gt;b:
temp=a
else :
temp=b
for i in range (1,temp+1,1):
if a%i==0 and b%i==0 :
count=count+1
print("input",a,b)
print("output",count)```
• ###### Aniruddha Chaudhari
September 15, 2019 at 4:54 pm

Thanks for sharing!

• ###### Stuart Bel
June 16, 2022 at 12:00 pm

Please Upload Toughest Array Coding Questions Asked In Clavax Technologies.

• ###### Aniruddha Chaudhari
June 23, 2022 at 11:48 pm
• ###### Rizul
May 28, 2020 at 9:01 pm

My approach for question 1.

```import numpy
li, factor_list = input().split(), []
for factors1 in range(1, int(li) + 1):
for factors2 in range(1, int(li) + 1):
if int(li) % factors1 == 0 and int(li) % factors1 == 0:
if int(li) % factors2 == 0 and int(li) % factors2 == 0:
factor_list.append(factors1)
factor_list.append(factors2)
print('Output: ', len(numpy.unique(factor_list)))
```
• ###### Aniruddha Chaudhari
May 30, 2020 at 3:14 pm

Interesting, Thanks for sharing!

• ###### Amal Mathew
April 27, 2021 at 7:51 pm
```a = 15
b = 10

if a > b :
large = a
else:
large = b
count = 0
for i in range(1,large+1):
if a % i == 0 and b % i == 0 :
count+=1
else :
continue
print('The Number of Cofactors are' , count)
```
• ###### Praneela
December 11, 2021 at 3:43 pm

How to save these questions?

• ###### Aniruddha Chaudhari
December 19, 2021 at 10:00 am

Bookmark this page. We keep adding more questions to this list. You can always visit this page anytime.

• ###### Kanwar
December 14, 2021 at 5:53 pm
```a,b = input("Enter two numbers : ").split(" ")
a,b = int(a),int(b)

greater = a if a&gt;b else b

count = 0

for n in range(1,greater+1):
if a % n == 0 and b % n == 0 :
count+=1

print(f'Cofactors of {a},{b} : ' , count)
```
• ###### Praneet Jam
December 19, 2021 at 10:30 am

• ###### Aniruddha Chaudhari
December 20, 2021 at 1:51 pm

Thanks. I’m glad you find it helpful. Best wishes.

• ###### kunal
October 1, 2022 at 10:57 am
```# Maximum Profit by buying and selling stocks
st=(100, 180, 260, 310, 40, 535, 695)
ls =[]
r = len(st)
temp = []
for s in t:
print("bay a stock day"+str(st.index(s)+1)+' in Rs',s)

try:
for i in range(st.index(s)+1,r):
sub = 0
sub = st[i]-s
temp.append(sub)
m1 =max(temp)
temp = []
print("sell a stock day"+str(i+1)+' of profit Rs  ',m1)
except:
print("sell a stock day"+str(i+1)+' of profit Rs  ',0)

ls.append(m1)
max(ls)
```