This code is giving run error for two test cases


constraints for q is not given

Hello @ankitdelhi20,

Your code will run only for q=1.

  1. You have to write a generalized code irrespective of q’s value.
    Solution:
    Create two arrays of the stack of size q+1:
  • One is for A
  • another for B
  1. You are computing prime numbers up to 10 which may cause any error.
    Make it 10^9 to cover the entire range of integer as it is not specified in the question.

Let’s understand the question first:

N is the no. of cards in A(0)th stack.
Q is the no. of iterations you have to perform.
The third input is N numbers, repeating the number of cards present in A(0)th stack.

Approach:
You have to run a loop Q times to check for every ith prime number.

for(int i=1;i<=q;i++)
{
/*

For each value of i, process A(i-1)th stack.
While processing, check if the elements of A(i-1)th stack are divisible by ith prime number or not.
if it is divisible add that element/number to B(i)th stack(B is another set of stacks).
If not then push that element to A(i)th stack.
*/
}
Print all the stacks of B i.e. from B(0) to B(Q) and then A(Q)th stack at last.

Note: elements in stack are pushed and popped in a LIFO manner.

Example:
INPUT:
N=5
Q=2
A(0)th stack : 1 2 3 4 5

Processing:
iterate for i =1 to Q;

for i=1(frst iteration):

Pop top element of A(i-1)th (A(0)th) stack i.e. 5
Check, ((top_element i.e. 5)%(ith prime number i.e. 1st prime number, 2)) == 0 ? Push top_element to B(i) i.e. B(1)th stack : Push top_element to A(i)i.e.A(1)th stack;
After repeating the same for all elements of stack A(0):
A(0)=[] i.e. empty as all elements have been popped.
A(1)=[5,3,1] as they are not divisible by 2.
B(1)=[4,2] as they are divisible by 2.

for i=2=Q (second and last iteration):

Pop top element of A(i-1)th (A(1)th) stack i.e. 1
Check, ((top_element i.e. 1)%(ith prime number i.e. 2nd prime number, 3)) == 0 ? Push top_element to B(i) i.e. B(2)th stack : Push top_element to A(i)i.e.A(2)th stack;
After repeating the same for all elements of stack A(1):
A(1)=[] i.e. empty as all elements have been popped.
A(2)=[1,5] as they are not divisible by 3.
B(2)=[3] as they are divisible by 3.

Output:
print elements of B(1),B(2),A(2)

2
4
3
5
1

Note: top element of the stack is popped first.

Hope, this would help.
If you still have doubts, feel free to ask.

I hope I’ve cleared your doubt. I ask you to please rate your experience here
Your feedback is very important. It helps us improve our platform and hence provide you
the learning experience you deserve.

On the off chance, you still have some questions or not find the answers satisfactory, you may reopen
the doubt.