格力网站的建设情况广东vs北京首钢
- 用short类型二维数组防止MLE。
- 这里用的记忆化搜索,如果f[x][y]已经有值了,直接返回这个值。
- 判断error的方法:如果下一次又访问到它,说明出现了循环,这样是永远%不到0的,所以,第一次访问一次f[x][y]就给它赋值-1,如果下一次又访问到f[x][y]=-1,直接return -1,输出error
ACcode:(有T组数据,但是mod只有一个。很显然,这道题可以用记忆化搜索嘛!)
#include<bits/stdc++.h>
using namespace std;
//#define int long long
const int N=1e4+10;
int x,y,mod;
short f[N][N];
int dfs(int x,int y){if(f[x][y]==-1) return -1;if(f[x][y]!=0) return f[x][y];f[x][y]=-1;if(x==0) return f[x][y]=1;if(y==0) return f[x][y]=2;return f[x][y]=dfs(((x+y)%mod),((x+y)%mod+y)%mod);
}
void solve() {cin>>x>>y;int ans=dfs(x,y);if(ans==-1) cout<<"error"<<"\n";else cout<<ans<<"\n";
}
signed main() {ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);int tt=1;cin>>tt>>mod;while(tt--)solve();return 0;
}