Explain Approach

How will new stacks be created if we have multiple queries?

Hello @ankush.bhardwaj0,

Lets understand the question, it will help you to figure out the approach:

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, representing the number of cards present in A(0)th stack.

Let’s understand this with the help of an 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.
Give a like if you are satisfied.

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.