Infosys QNs
Infosys QNs
The Infosys Exam Pattern contains only one test which will contain all the topics like
logical ability, Verbal, Pseudo Code, etc. To be more specific it contains 5 sections
with the name:
Mathematical Ability
Reasoning Ability
Verbal Ability
Pseudo Code
Puzzle Solving
int main ()
{
int a[] = {11, 12, 13, 14};
int b[] = {15, 16, 17, 18};
int n = sizeof(a)/sizeof(a[0]);
swap(a, b);
return 0;
}
def sortString(str):
charCount[ord(str[i]) - ord('a')] += 1
if __name__ == '__main__':
s = "prepbytes"
sortString(s)
s = set([])
for i in range(len(st)):
C2 - Restricted use
s.add(st[i])
return len(s)
if __name__ == "__main__":
st = "prepbytes"
print(cntDistinct(st))
4. Write a program to multiply two matrices and print the result through another
matrix.
def mulMat(mat1, mat2, R1, R2, C1, C2):
rslt = [[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]]
if __name__ == '__main__':
R1 = 2
R2 = 2
C1 = 2
C2 = 2
if C1 != R2:
print("The number of columns in Matrix-1 must be equal to the number of rows in " + "Matrix-2", end='')
print("\n", end='')
print("Please update MACROs according to your array dimension in #define section", end='')
print("\n", end='')
else:
C2 - Restricted use
5. Given a string find the next permutation of the given string in C++.
#include <iostream>
bool nextpermutation(string& s)
{
int len = s.length(), i = len - 2;
while (i >= 0 && s[i] >= s[i + 1])
--i;
if (i < 0)
return false;
else {
int index = bsearch(s, i + 1, len - 1, s[i]);
swap(&s[i], &s[index]);
rev(s, i + 1, len - 1);
return true;
}
C2 - Restricted use
int main()
{
string s = { "prepbytes" };
bool val = nextpermutation(s);
if (val == false)
cout << "No Word Possible" << endl;
else
cout << s << endl;
return 0;
}
6. Write a program to find the area of the incircle of a right angles triangle.
PI = 3.14159265
P=3
B=4
H=5
print(area_inscribed(P, B, H))
7. Write a program that will find the missing characters that are needed to make
the string a panagram.
MAX_CHAR = 26
def missingChars(Str):
for i in range(len(Str)):
if (Str[i] >= 'a' and Str[i] <= 'z'):
present[ord(Str[i]) - ord('a')] = True
elif (Str[i] >= 'A' and Str[i] <= 'Z'):
present[ord(Str[i]) - ord('A')] = True
res = ""
for i in range(MAX_CHAR):
if (present[i] == False):
res += chr(i + ord('a'))
C2 - Restricted use
return res
print(missingChars(Str))
8. Write a program that converts the given temperature of Fahrenheit into celsius.
def Cel_To_Fah(n):
return (n*1.8)+32
n = 40
print(int(Cel_To_Fah(n)))
9. Write a program that will find the sum of all the prime numbers between 1 and
N.
def sumOfPrimes(n):
prime = [True] * (n + 1)
p=2
while p * p <= n:
if prime[p] == True:
i=p*2
while i <= n:
prime[i] = False
i += p
p += 1
sum = 0
for i in range (2, n + 1):
if(prime[i]):
sum += i
return sum
n = 15
print(sumOfPrimes(n))
10. Write a program to make the largest number from the digits of the array.
def largestNumber(array):
if len(array)==1:
return str(array[0])
for i in range(len(array)):
C2 - Restricted use
array[i]=str(array[i])
for i in range(len(array)):
for j in range(1+i,len(array)):
if array[j]+array[i]>array[i]+array[j]:
array[i],array[j]=array[j],array[i]
result=''.join(array)
if(result=='0'*len(result)):
return '0'
else:
return result
11. Given an array form a triangle such that the last row of the triangle contains all
the elements of the array and the row above it will contain the sum of two
elements below it.
for i in range(n):
tri[n - 1][i] = arr[i]
i=n-2
while(i >= 0):
for j in range(0, i + 1, 1):
tri[i][j] = (tri[i + 1][j] +
tri[i + 1][j + 1])
i -= 1
arr = [4, 7, 3, 6, 7, 3]
n = len(arr)
printTriangle(arr, n)
12. Given the price of the stock on each day find the maximum profit you can earn
by selling them.
C2 - Restricted use
profit = 0
return profit
if __name__ == '__main__':
price = [100, 180, 260, 310, 40, 535, 695]
n = len(price)
print(maxProfit(price, 0, n - 1))
13. You are given a matrix that contains only 0 and 1 find the maximum size of a
rectangle that contains only 1.
class Solution():
def maxHist(self, row):
result = []
# Top of stack
top_val = 0
max_area = 0
area = 0
i=0
while (i < len(row)):
i += 1
else:
top_val = row[result.pop()]
area = top_val * i
if (len(result)):
area = top_val * (i - result[-1] - 1)
max_area = max(area, max_area)
while (len(result)):
top_val = row[result.pop()]
area = top_val * i
if (len(result)):
area = top_val * (i - result[-1] - 1)
return max_area
result = self.maxHist(A[0])
for j in range(len(A[i])):
if (A[i][j]):
A[i][j] += A[i - 1][j]
return result
if __name__ == '__main__':
A = [[0, 1, 1, 0],
[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 0, 0]]
ans = Solution()
14. Given the coordinates of the endpoints of two rectangles find whether they
overlap each other or not.
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
return True
if __name__ == "__main__":
l1 = Point(0, 10)
r1 = Point(10, 0)
l2 = Point(5, 5)
r2 = Point(15, 0)
15. You are given two strings to find whether we can convert one string to another
by rotating in two places.
def isRotated(str1, str2):
if (len(str1) != len(str2)):
return False
str1 = "prep"
str2 = "eppr"
if isRotated(str1, str2):
print("Yes")
else:
print("No")
Given a sorted array arr and an integer k, find the position(0-based indexing) at
which k is present in the array using binary search.
Examples:
Constraints:
1 <= arr.size() <= 105
1 <= arr[i] <= 106
1 <= k <= 106
class Solution:
def binarysearch(self, arr, k):
# Code Here
l=0
r=len(arr)-1
while l<=r:
mid = (l+r)//2
if arr[mid]==k:
C2 - Restricted use
return mid
elif arr[mid]<k:
l=mid+1
else:
r=mid-1
return -1
Given an array arr, the task is to find the largest element in it.
Examples:
Constraints:
1 <= arr.size()<= 105
0 <= arri <= 105
arr may contain duplicate elements.
class Solution:
def largest(self, n : int, arr : List[int]) -> int:
C2 - Restricted use
max=arr[0]
for i in range(len(arr)):
if arr[i]>max:
max=arr[i]
return max
Given a number N, find the first N Fibonacci numbers. The first two number of the
series are 1 and 1.
Example 1:
Input:
N=5
Output: 1 1 2 3 5
Example 2:
Input:
N=7
Output: 1 1 2 3 5 8 13
Your Task:
Your task is to complete printFibb() which takes single argument N and returns a list
of first N Fibonacci numbers.
Constraints:
1<= N <=84
class Solution:
def printFibb(self, n):
if n <= 0:
return []
if n == 1:
return [1]
C2 - Restricted use
return fib_sequence
solution = Solution()
You have n books, each with arr[i] a number of pages. m students need to be
allocated contiguous books, with each student getting at least one book.
Out of all the permutations, the goal is to find the permutation where the sum of
the maximum number of pages in a book allotted to a student should
be the minimum, out of all possible permutations.
Examples:
Constraints:
1 <= n, m <= 105
1 <= arr[i] <= 106
class Solution:
def findPages(self,N, A, M):
l = max(A); r = sum(A); ans = -1
if len(A) < M: return -1 # Number of books can not be lesser than number of of students as we have to
give atleast 1 book to a student
for pages in A:
pageSum += pages
if pageSum > mid: # sum of pages allocated to one student exceed max capacity of the student
requiredStudents += 1 # We need one more student
pageSum = pages # start calculating sum of pages can be allocated to next student
while l <= r:
mid = l + (r - l) // 2
if isValid(A, M, mid):
ans = mid # Updating answer the the current mid as it is the most optimized(least) ans till now
r = mid - 1 # I will try to decrease mid
else:
l = mid + 1 # current mid NOT isValid so I will try to increase mid
Example 1:
C2 - Restricted use
Input: N = 6
arr = {1, 2, 3, 6, 5, 4}
Output: {1, 2, 4, 3, 5, 6}
Explaination: The next permutation of the
given array is {1, 2, 4, 3, 5, 6}.
Example 2:
Input: N = 3
arr = {3, 2, 1}
Output: {1, 2, 3}
Explaination: As arr[] is the last
permutation. So, the next permutation
is the lowest one.
Your Task:
You do not need to read input or print anything. Your task is to complete the
function nextPermutation() which takes N and arr[ ] as input parameters and returns
a list of numbers containing the next permutation.
Constraints:
1 ≤ N ≤ 10000
class Solution:
def nextPermutation(self, N, arr):
index=-1
for i in range(N-2,-1,-1):
if arr[i]<arr[i+1]:
index=i
break
if index==-1:
arr.reverse()
return arr
C2 - Restricted use
for i in range(N-1,index,-1):
if arr[i]>arr[index]:
arr[i],arr[index]=arr[index],arr[i]
break
arr[index+1:]=reversed(arr[index+1:])
return arr
SPEACIALIST PROGRAMMER
You are given an array a of N Integers and asked to split the array a into k consecutive segments such that
each element of a belongs to exactly one segment and the sum of the cost of all segments is minimum.
We define the cost of some segment t as the sum of distances between the first and last occurrence for each
unique element in the segment t.
Your task is to find the minimum possible total sum of the cost of all segments.
Input Format
#include<bits/stdc++.h>
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
cin >> n >> m;
for (i = 1; i <= n; ++i) cin >> a[i];
for (i = 1; i <= n; ++i) dp[i][0] = inf, pre[i] = lst[a[i]], lst[a[i]] = i;
for (i = 1; i <= n; ++i) lst[a[i]] = n + 1;
for (i = n; i; --i) nxt[i] = lst[a[i]], lst[a[i]] = i;
for (i = 1; i <= m; ++i) solve(1, n, 0, n, i);
cout << dp[n][m] << "\n";
}
C2 - Restricted use
Problem Statement :
Wael wants to play Santa this year, so he prepared gifts for all the children of the neighborhood. He decided
to pack the gifts in boxes and give each child a box. Let’s define the Value of the box as the number of distinct
types of gifts inside this box.
Wael has N gifts, such that the type of each gift i is A[i]. Wael wants to pack exactly K boxes, and he has to
put in each box a sub-array of consecutive gifts
Wael wants to maximize the total value of all boxes with gifts. Your task is to help him determine this
maximum possible total value
Notes
Each gift should be put in exactly one box, and each box should contain a sub-array of consecutive
gifts.
A box cannot be left empty
Input Format
Sample Sample
Input Output Explanation
1 1 Wael will put the only gift in a box so the total value will be 1.
1
1
4 2 Wael has only one box he has to put all gifts in it, so that there are two types of gifts in the
1 box, so the value is equal to 2
1
2
2
1
7 5 It is optimal to put the first two gifts in the first box, and all the rest in the second There are
2 two distinct types in the first box, and three in the second box then, so the total value is 5.
1
3
3
C2 - Restricted use
1
4
4
4
#include <bits/stdc++.h>
using namespace std;
int ans = INT_MIN;
void solve(int a[], int n, int k, int index, int count, int maxval)
{
if (k == 1) {
maxval = max(maxval, count);
count = 0;
map<int, int>mp;
for (int i = index; i < n; i++) {
mp[a[i]]++;
}
count = mp.size();
mp.clear();
}
}
// Driver Code
int main()
{
int arr[] = {1, 1};
int k = 2; // K divisions
C2 - Restricted use
Problem Statement :
A subarray of array A is a segment of contiguous elements in array A.
Given an array A of N elements, you can apply the following operations as many times as you like:
– Choosing a subarray [L, R] and subtracting 1 from each element in this subarray. The cost of this operation
is X.
– Choosing an index i such that A[i] is positive, and setting A[i] = 0. The cost of this operation in Y.
Your task is to make all the elements equal to 0 and find the minimum cost to do so.
Input Format
The first line contains an integer, N., denoting the number of elements in A.
The next line contains an integer, X, denoting the cost of the first operation.
The next line contains an integer. Y, denoting the cost of the second operation
Each line i of the N subsequent lines (where 1 <=i<= N) contains an Integer describing Ai.
Constraints
1<=N<=10^5
1<=X<=10
1<=Y<=10^4
1<=A[i]<=10^8
Sample Input 1
1
1
10
1
Sample Output 1
1
Explanation:
N=1 X=1 Y=10 A=[1]. The optimal solution is to perform one operation of the first type on the subarray [1,N].
Sample Input 2
3
1
1
1
C2 - Restricted use
1
1
Sample Output 2
1
Explanation:
N=3 X=1 Y=1 A=[1,1,1] The optimal solution is to perform one operation of the first type on the
subarray[1,N];
n=1
x=1
y = 10
arr = [1]
ans = 0
arrSize = len(arr)
for i in range(arrSize):
arr[i] = arr[i] - 1
ans = ans + x
for i in range(arrSize):
if arr[i] != 0:
arr[i] = 0
ans = ans + y
print(ans)
Problem Statement :
Given an array A of N elements. You should choose a value B such that (B>=0), and then for each element in A
set A[i]=A[i](+)B where is the bitwise XOR.
Print the minimum number of inversions in array A that you can achieve after choosing the value of B
optimally and setting A[i] = A[i] (+) B. Since the answer might be large, print it modulo (10^9+7)
Input Format
#include <bits/stdc++.h>
#define sz(x) ((int)(x).size())
#define inf mod
int main ()
{
C2 - Restricted use
cin >> n;
for (int i = 1; i <= n; i++)
{
int x;
cin >> x;
add (x, i);
}
go (0);
int inv = 0;
int res = 0;
for (int i = 0; i <= 29; i++)
{
inv += min (dp[0][i], dp[1][i]);
if (dp[1][i] < dp[0][i])
res += (1 << i);
}
cout << inv;
}
Problem Statement :
Wael is well-known for how much he loves the bitwise XOR operation, while kaito is well known for how
much he loves to sum numbers, so their friend Resli decided to make up a problem that would enjoy
both of them. Resil wrote down an array A of length N, an integer K and he defined a new function
called Xor- sum as follows
1<=N<=10^5
0<=K<=10^9
0<=A[i]<=10^9
Sample Input 1
1
0
989898
Sample Output 1
C2 - Restricted use
989898
Explanation:
Xor_sum(0)=(0^989898)=989898
Sample Input 2
3
7
1
6
3
Sample Output 2
14
Explanation
Xor_sum(4)=(4^1)+(4^6)+(4^3)=14.
Sample Input 3
4
9
7
4
0
3
Sample Output 3
46
Explanation:
Xor_sum(8)=(8^7)+(8^4) +(8^0)+(8^3)=46.
n=4
x=9
arr = [7, 4, 0, 3]
print(Xor_sum(x, arr))