不明白为什么按着题目的意思操作直接模拟不行,感觉这复杂度就是O(n)。
#include<iostream>
#include<cstdio>
#include<queue>
#include<algorithm>
#define MAXN 1000010
#define _for(i,a,b) for(int i=(a);i<=(b);i++)
using namespace std;
typedef long long int ll;
int a[100010*5],b[100010*5];
int read()
{
int x=0,f=1;
char c=getchar();
while(!isdigit(c))
{
if(c=='-') f=-1;
c=getchar();
}
while(isdigit(c))
{
x=x*10+c-'0';
c=getchar();
}
return x*f;
}
int main()
{
int t=read();
while(t--)
{
int n=read(),mod=read();
ll ans=1;
_for(i,1,n)
{
int x=read(),y=read();
a[i]=y;
//printf("x:%d y:%d\n",x,y);
if(x==1)
{
ans=(ans*y)%mod;
cout<<ans<<endl;
}
else
{
// printf("ay:%d\n",a[y]);
ans=(ans/a[y])%mod;
cout<<ans<<endl;
}
}
}
return 0;
}