TCS Digital Coding Questions and Answers 2024 (Freshers/Exp) | TCS Digital Advanced Coding Questions and Answers

TCS Digital Coding Questions and Answers 2024 | TCS Digital Advanced Coding Questions and Answers | Previously Asked TCS Digital Coding Questions | TCS Digital Coding Solved Old Questions | TCS Digital Coding Questions For Freshers

TCS Digital Coding Questions and Answers 2024: TCS Digital Coding is one of the most important components of TCS Digital’s hiring procedure. This section will assess your problem-solving and programming efficiency. This round will consist of four code questions covering a variety of topics. You can supply the solutions in any of the supported programming languages. TCS Digital did not specify a language for hiring, whereas only Python and Java were allowed for TCS Digital Last year. However, we suggest that you focus more on C++, Java, Python, etc.

Users are given a series of TCS Digital coding problems to test their coding abilities. The level of the TCS Digital Coding Questions ranges from easy to moderate. More details like TCS Digital Coding Questions and Answers, TCS Digital Coding Questions and Answers, TCS Digital Interview Questions and Answers, TCS Digital Cut Off, Salary, Hike, Increment, Annual Appraisal, etc. are available on this page

TCS Digital Coding Questions Marking Scheme 2024

Coding Marks
Marks
0 Test Case
0 Marks
1 Test Case
5 Marks
2 Test Case
8 Marks
3 Test Case
12 Marks
4 Test Case
18 Marks
5 Test Case
22 Marks

TCS Digital Coding Test Pattern 2024 (Updated)

You may use any of the following languages during the test:

  • C
  • C#
  • C++
  • Java 7
  • Kotlin
  • Lua
  • Perl
  • Python
  • Python3
  • Ruby
  • Scala
  • Erlang
  • go
  • Haskel
  • Java

TCS Digital Coding Questions With Solutions

Q) Problem Statement -: In this even odd problem Given a range [low, high] (both inclusive), select K numbers from the range (a number can be chosen multiple times) such that sum of those K numbers is even.

Calculate the number of all such permutations.

As this number can be large, print it modulo (1e9 +7).

Constraints

  • 0 <= low <= high <= 10^9
  • K <= 10^6.

Input

  • First line contains two space separated integers denoting low and high respectively
  • Second line contains a single integer K.

Output

  • Print a single integer denoting the number of all such permutations

Time Limit

1

Examples

Example 1

Input

4 5

3

Output

4

Explanation

There are 4 valid permutations viz. {4, 4, 4}, {4, 5, 5}, {5, 4, 5} and {5, 5, 4} which sum up to an even number.

Example 2

Input

1 10

2

Output

50

Explanation

There are 50 valid permutations viz. {1,1}, {1, 3},.. {1, 9} {2,2}, {2, 4},… {2, 10} . . . {10, 2}, {10, 4},… {10, 10}. These 50 permutations, each sum up to an even number.

EXAMPLE

C++ Program

#include<bits/stdc++.h> 
using namespace std;
typedef long long int lld;
#define mod 1000000007
long e_sum(long m,long n,long K,long N)
{
if(K==1)
{
return n;
}
else
{
return (N-(m-n)*e_sum(m,n,K-1,N)%(1000000007));
}
}
int main()
{
long low,high,K,m,n,diff,Out,N,i;
scanf("%ld",&low);
scanf("%ld",&high);
scanf("%ld",&K);
diff=high-low+1;
if(diff%2==0)
{
m=diff/2;
n=m;
}
else
{
if(low%2==0)
{
m=(diff-1)/2;
n=m+1;
}
else
{
m=(diff+1)/2;
n=m-1;
}
}
N=m;
for(i=0;i<K-1;i++)
{
N=(N*(m+n))%1000000007;
}
Out=e_sum(m,n,K,N)%1000000007;
printf("%ld",Out);
return 0;
}

Python Program

mod=1000000007
def esum(m,n,K,N):
    if(K==1):
       return n
    else:
        return (N-(m-n)*esum(m,n,K-1,N)%mod)
low,high=map(int,input().split())
K=int(input())
diff=high-low+1
if(diff%2==0):
m=diff//2
n=m
else:
if(low%2==0):
m=(diff-1)//2
n=m+1
else:
m=(diff+1)//2
n=m-1
N=m
for i in range(K-1):
N=(N*(m+n))%mod
out=esum(m,n,K,N)%mod
print(out)

Q) Problem Description -:  In this 3 Palindrome, Given an input string word, split the string into exactly 3 palindromic substrings. Working from left to right, choose the smallest split for the first substring that still allows the remaining word to be split into 2 palindromes.

Similarly, choose the smallest second palindromic substring that leaves a third palindromic substring.

If there is no way to split the word into exactly three palindromic substrings, print “Impossible” (without quotes). Every character of the string needs to be consumed.

Cases not allowed –

  • After finding 3 palindromes using above instructions, if any character of the original string remains unconsumed.
  • No character may be shared in forming 3 palindromes.

Constraints

  • 1 <= the length of input sting <= 1000

Input

  • First line contains the input string consisting of characters between [a-z].

Output

  • Print 3 substrings one on each line.

Time Limit

1

Examples

Example 1

Input

nayannamantenet

Output

nayan

naman

tenet

Explanation

  • The original string can be split into 3 palindromes as mentioned in the output.
  • However, if the input was nayanamantenet, then the answer would be “Impossible”.

Example 2

Input

aaaaa

Output

a

a

aaa

Explanation

  • The other ways to split the given string into 3 palindromes are as follows –
  • [a, aaa, a], [aaa, a, a], [aa, aa, a], etc.
  • Since we want to minimize the length of the first palindromic substring using left to right processing, the correct way to split is [a, a, aaa].

Example 3

Input

aaaabaaaa

Output

a

aaabaaa

a

Explanation

  • The other ways to split the given string into 3 palindromes are as follows –
  • [aaaa, b, aaaa], [aa, aabaa, aa], etc.
  • Since we want to minimize the length of the first palindromic substring using left to right processing, the correct way to split is [a, aaabaaa, a].

EXAMPLE

Python Program

import sys
def if_palindrome(s):
    if len(s)==1:
        return True
    s1=s[::-1]
    return s1==s
s=input()
l=len(s) 
for i in range(1,l-1):
    s1=s[:i]
    if if_palindrome(s1):
        for j in range(1,l-i):
            s2=s[i:i+j]
            s3=s[i+j:]
            if if_palindrome(s2) and if_palindrome(s3):
                print(s1)
                print(s2)
                print(s3)
                sys.exit()
print("Impossible")

Q) Problem Description -: Given an array Arr[ ] of N integers and a positive integer K. The task is to cyclically rotate the array clockwise by K.

Note : Keep the first of the array unaltered. 

Example 1:

  • 5  —Value of N
  • {10, 20, 30, 40, 50}  —Element of Arr[ ]
  • 2  —–Value of K

Output :

40 50 10 20 30

Example 2:

  • 4  —Value of N
  • {10, 20, 30, 40}  —Element of Arr[]
  • 1  —–Value of K

Output :

40 10 20 30

EXAMPLE

C++ Program

#include<bits/stdc++.h>
using namespace std;
vector rotate(int nums[], int n, int k) {

if (k > n)
k = k % n;

vector ans(n);

for (int i = 0; i < k; i++) {
ans[i] = nums[n - k + i];
}

int index = 0;
for (int i = k; i < n; i++) {
ans[i] = nums[index++];
}
return ans;
}

int main()
{
int Array[] = { 1, 2, 3, 4, 5 };
int N = sizeof(Array) / sizeof(Array[0]);
int K = 2;

vector ans = rotate(Array, N, K);
for (int i = 0; i < N; ++i) {
cout << ans[i] << ' ';
}
}

Q) Problem Description -:  Given two non-negative integers n1 and n2, where n1

For example:

Suppose n1=11 and n2=15.

There is the number 11, which has repeated digits, but 12, 13, 14 and 15 have no repeated digits. So, the output is 4.

Example1:

Input:

  • 11 — Vlaue of n1
  • 15 — value of n2

Output:

  • 4

Example 2:

Input:

  • 101 — value of n1
  • 200 — value of n2

Output:

  • 72

EXAMPLE

Java Program

import java.util.*;
public class Main
{
    static int find(int n1, int n2) {
        int count = 0;
        for (int i = n1 ; i <= n2 ; i++) { int num = i; boolean[] visited = new boolean[10]; while (num > 0) {
if (visited[num % 10] == true)
break;
visited[num % 10] = true;
num /= 10;
}
if (num == 0)
count++;
}
return count;
}
public static void main(String[] args) {
int n1 = 101, n2 = 200;
System.out.println(find(n1, n2));
}
}

TCS Digital Advanced Coding Questions and Answers 2024

Q) Roco is an island near Africa which is very prone to forest fire. Forest fire is such that it destroys the complete forest. Not a single tree is left.This island has been cursed by God , and the curse is that whenever a tree catches fire, it passes the fire to all its adjacent tree in all 8 directions,North, South, East, West, North-East, North-West, South-East, and South-West.And it is given that the fire is spreading every minute in the given manner, i.e every tree is passing fire to its adjacent tree.Suppose that the forest layout is as follows where T denotes tree and W denotes water.

Your task is that given the location of the first tree that catches fire, determine how long would it take for the entire forest to be on fire. You may assume that the lay out of the forest is such that the whole forest will catch fire for sure and that there will be at least one tree in the forest

Input Format:

  • First line contains two integers, M, N, space separated, giving the size of the forest in terms of the number of rows and columns respectively.
  • The next line contains two integers X,Y, space separated, giving the coordinates of the first tree that catches the fire.
  • The next M lines, where ith line containing N characters each of which is either T or W, giving the position of the Tree and Water in the  ith row of the forest.

Output Format:

Single integer indicating the number of minutes taken for the entire forest to catch fire

Constrains:

  • 3 ≤ M ≤ 20
  • 3 ≤ N ≤ 20

Sample Input 1:

3 3
W T T
T W W
W T T
Sample Output 1:

5

Explanation:
In the second minute,tree at (1,2) catches fire,in the third minute,the tree at (2,1) catches fire,fourth minute tree at (3,2) catches fire and in the fifth minute the last tree at (3,3) catches fire.
Sample Input 2:
6 6
1 6
W T T T T T
T W W W W W
W T T T T T
W W W W W T
T T T T T T
T W W W W W

Sample Output 2:

16

EXAMPLE

C++ PROGRAM

#include <bits/stdc++.h>
using namespace std;
char f[21][21];
int n,m;
struct node{int a,b;};
bool valid(int x,int y) {return (x>=0&&y>=0&&x<n&&y<m);}
bool step(node temp){return (temp.a==-1&&temp.b==-1);}
int main()
{
cin>>n>>m;
int x,y,i,j,count=0;int ans=1;
cin>>x>>y;x--;y--;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
cin>>f[i][j];
f[x][y]='X';

queueq;
node temp;
temp.a=x;temp.b=y;
q.push(temp);
temp.a=-1;temp.b=-1;
q.push(temp);

while(!q.empty())
{
bool flag=false;
while(!step(q.front()))
{
node count=q.front();
if(valid(count.a+1,count.b)&&f[count.a+1][count.b]=='T')//a+1,b
{
if(flag==false){flag=true;ans++;}
f[count.a+1][count.b]='X';
count.a++;
q.push(count);
count.a--;
}
if(valid(count.a+1,count.b+1)&&f[count.a+1][count.b+1]=='T')//a+1,b+1
{
if(flag==false){flag=true;ans++;}
f[count.a+1][count.b+1]='X';
count.a++;count.b++;
q.push(count);
count.a--;count.b--;
}
if(valid(count.a+1,count.b-1)&&f[count.a+1][count.b-1]=='T')//a+1,b-1
{
if(flag==false){flag=true;ans++;}
f[count.a+1][count.b-1]='X';
count.a++;count.b--;
q.push(count);
count.a--;count.b++;
}
if(valid(count.a,count.b+1)&&f[count.a][count.b+1]=='T')//a,b+1
{
if(flag==false){flag=true;ans++;}
f[count.a][count.b+1]='X';
count.b++;
q.push(count);
count.b--;
}
if(valid(count.a,count.b-1)&&f[count.a][count.b-1]=='T')//a,b-1
{
if(flag==false){flag=true;ans++;}
f[count.a][count.b-1]='X';
count.b--;
q.push(count);
count.b++;
}
if(valid(count.a-1,count.b-1)&&f[count.a-1][count.b-1]=='T')//a-1,b-1
{
if(flag==false){flag=true;ans++;}
f[count.a-1][count.b-1]='X';
count.a--;count.b--;
q.push(count);
count.a++;count.b++;
}
if(valid(count.a-1,count.b+1)&&f[count.a-1][count.b+1]=='T')//a-1,b+1
{
if(flag==false){flag=true;ans++;}
f[count.a-1][count.b+1]='X';
count.a--;count.b++;
q.push(count);
count.a++;count.b--;
}
if(valid(count.a-1,count.b)&&f[count.a-1][count.b]=='T')//a-1,b
{
if(flag==false){flag=true;ans++;}
f[count.a-1][count.b]='X';
count.a--;
q.push(count);
count.a++;
}
q.pop();
}
q.pop();
if(!q.empty())
{
temp.a=-1;
temp.b=-1;
q.push(temp);
}

/*
cout<<endl;
for(i=0;i<n;i++)
{for(j=0;j<m;j++)
{cout<<f[i][j]<<" ";}cout<<endl;}
cout<<endl<<endl;
*/
}
cout<<ans;
}

JAVA PROGRAM

import java.util.HashMap;
import java.util.Scanner;

class Temp {

    static void print(int [][] arr){
        for(int i=0;i<arr.length;i++){
            for (int j=0;j<arr[0].length;j++){
                System.out.print(arr[i][j]+"\t");
            }
            System.out.println();
        }
    }
    public static void main (String[] args) {
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        int [][] array = new int[N][N];
        HashMap<Integer, Integer> map = new HashMap<>();

        int powerpoints = 1 + (N*N)/11;

        int counter = 1;
        int row = 0, col = 0; // for the current row/col that we are end
        int endRow = 0, endColumn = 0; // for the row/col where we need to stop

        map.put(0,0);

        for(int i=0;i<N/2;i++){
            row = col = i;
            endColumn = N-i-1;

            while (col < endColumn) {
                array[row][col] = counter;

                if (counter % 11==0)
                    map.put(row,col);

                counter++;
                col++;
            }
            endRow = N-i-1;
            while (row<endRow){
                array[row][col] = counter;
                if (counter % 11==0)
                    map.put(row,col);
                counter++;
                row++;
            }

            endColumn = i;
            while (col>endColumn){
                array[row][col] = counter;
                if (counter % 11==0)
                    map.put(row,col);
                counter++;
                col--;
            }

            endRow = i;
            while (row>endRow){
                array[row][col] = counter;
                if (counter % 11==0)
                    map.put(row,col);
                counter++;
                row--;
            }


        }
        if (N%2==1)
            array[N/2][N/2] = N*N;

        print(array);
        System.out.println("Total Power Points: " + powerpoints);
        for (Integer key: map.keySet()) {
            System.out.println("("+key+ ","+map.get(key)+")");

        }

    }

}

Problem Statement:- In a Conference ,attendees are invited for a dinner after the conference.The Co-ordinator,Sagar arranged around round tables for dinner and want to have an impactful seating experience for the attendees.Before finalizing the seating arrangement,he wants to analyze all the possible arrangements.These are R round tables and N attendees.In case where N is an exact multiple of R,the number of attendees must be exactly N//R,,If N is not an exact multiple of R, then the distribution of attendees must be as equal as possible.Please refer to the example section before for better understanding.
For example, R = 2 and N = 3
All possible seating arrangements are
(1,2) & (3)
(1,3) & (2)
(2,3) & (1)
Attendees are numbered from 1 to N.

Input Format:

  • The first line contains T denoting the number of test cases.
  • Each test case contains two space separated integers R and N, Where R denotes the number of round tables and N denotes the number of attendees.

Output Format:

Single Integer S denoting the number of possible unique arrangements.

Constraints:

  • 0 <= R <= 10(Integer)
  • 0 < N <= 20 (Integer)
Sample Input 1:
1
2 5
Sample Output 1:

10

Explanation:

R = 2, N = 5

(1,2,3) & (4,5)

(1,2,4) & (3,5)

(1,2,5) & (3,4)

(1,3,4) & (2,5)

(1,3,5) & (2,4)

(1,4,5) & (2,3)

(2,3,4) & (1,5)

(2,3,5) & (1,4)

(2,4,5) & (1,3)

(3,4,5) & (1,2)

Arrangements like

(1,2,3) & (4,5)

(2,1,3) & (4,5)

(2,3,1) & (4,5) etc.

But as it is a round table,all the above arrangements are same.

EXAMPLE

C++ PROGRAM

#include<bits/stdc++.h>
using namespace std;
typedef long long int ll; 
map <ll,ll> dp;
int fac(int n)
{
if(dp[n])
return dp[n];
dp[n]=n*fac(n-1);
return dp[n];
}
int func(int n)
{
if(n<=3)
return 1;
return fac(n-1);
}

int main()
{
dp[0]=dp[1]=1;
int tests;cin>>tests;
while(tests--)
{int R,N,c=1;
cin>>R>>N;
if(N<=R)
{
cout<<1;
continue;
}
int a=N/R,n=N%R;
ll ans=fac(N)/(pow(fac(a),R-n) * pow(fac(a+1),n) )/fac(n)/fac(R-n);
for(int i=1;i<=n;i++)
c*=func(a);
for(int i=n+1;i<=R;i++)
c*=func(a-1);

cout<<c*ans;}
}

JAVA PROGRAM

import java.util.*;
public class Stack
{
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int testcases = scanner.nextInt();
        int tables = 0,people;
        while (testcases-->0)
            tables = scanner.nextInt();
            people = scanner.nextInt();
            System.out.println(find(tables,people));
    }
    public static int find(int r,int n)
    {
        int x = n/r;
        int y1 = n%r;
        int x1 = 0;
        int ans1 = 1;
        while(r!=0)
        {
            if(y1>0)
            {
                x1 = x+1;
                y1 = y1-1;
            }
            else
            {
                x1 = x;
            }
            ans1 = ans1*combination(n,x1);
            n = n-x1;
            r--;
        }
        return ans1;
    }
    public static int factorial(int n)
    {
        if(n==0||n==1)
        {
            return 1;
        }
        return n * factorial(n-1);
    }
    public static int combination(int n,int r)
    {
        return factorial(n)/(factorial(n-r)*factorial(r));
    }
}

PYTHON PROGRAM

testcases = int(input())
for i in range(testcases):
    tables, people = map(int, input().split())
    result = 1
if tables >= people:
print(result)
else:
PA = people // tables
PB = PA + 1
TB = people % tables
TA = tables - TB
# Using DP to store factorials pre-hand
fact = [1]
for j in range(1, people + 1):
fact.append(j*fact[j-1])

for i in range(TB):
result = result * (fact[people]//(fact[PB]*fact[people-PB]))
people = people - PB

for i in range(TA):
result = result * (fact[people]//(fact[PA]*fact[people-PA]))
people = people - PA

print(result)
JOB ALERT ON INSTAGRAM FOLLOW NOW>>
JOB ALERT ON YOUR EMAIL DAILY SUBSCRIBE NOW>>

Keep an eye on Dailyrecruitment.in for the most up-to-date information about upcoming exams and results. Find out about official notices, Exam Patterns, Syllabus, Previous Question Papers, Expected Cut Off, Results, Merit List, Study Materials, and much more. Now is the time to bookmark in order to take advantage of even more amazing career opportunities.

Govt Jobs by Qualifications

Education & Vacancies Salary Apply Link
10th Pass Govt Jobs - 5,000 Vacancies Rs. 5,200 - 63,200 Apply Now
12th Pass Govt Jobs - 18,000+ Vacancies Rs. 5,200 - 92,300 Apply Now
ITI Pass Jobs - 3,500 Vacancies Rs. 5,200 - 35,000 Apply Now
Any Graduate Jobs - 19,100 Vacancies Rs. 5,200 - 92,300 Apply Now
Central Govt Jobs Rs. 5,200 - 17,000 Apply Now
Bank Jobs - 1,000 Vacancies Rs. 5,200 - 29,200 Apply Now
Diploma Jobs - 9,300 Vacancies Rs. 5,200 - 35,000 Apply Now
BTech/BE Jobs - 18,000 Vacancies Rs. 15,000 - 1,00,000 Apply Now
Data Entry Jobs - 1,300 Vacancies Rs. 5,200 - 29,200 Apply Now
Private Jobs Rs. 10,000 - 67,700 Apply Now