#include<bits/stdc++.h>
using namespace std;
int Mod;
int jiyi[10010][10010][2];
int dg(int x,int y,int round)
{
if(round > 100)
{
return 0;
}
if(jiyi[x][y][round%2] != -1)
{
return jiyi[x][y][round%2];
}
if(x == 0)
{
return 1;
}
if(y == 0)
{
return 2;
}
if(round % 2 == 1)
{
int a = dg((x+y)%Mod,y,round+1);
jiyi[x][y][1] = a;
return a;
}
else
{
int a = dg(x,(x+y)%Mod,round+1);
jiyi[x][y][0] = a;
return a;
}
return 0;
}
int main()
{
int a,b,t;
cin >> t >> Mod;
memset(jiyi,-1,sizeof jiyi);
while(t--)
{
cin >> a >> b;
int x = dg(a,b,1);
if(x != 0)
{
cout << x << '\n';
}
else
{
cout << "error\n";
}
}
return 0;
}
一直爆空间,555