洛谷 P5635 【CSGRound1】天下第一
原址链接 P5635 【CSGRound1】天下第一
先看标签
搜索?模拟?用不着这么复杂
创建函数a(int x,int y,int p)
a(int x,int y,int p){if(x<=0){return 1;}x = (x+y)%p;if(y<=0){return 2;}y = (x+y)%p;return a(x,y,p);
}
写入主函数
#include<iostream>
using namespace std;
int p,t;
int a(int x,int y,int p){if(x==y){return 3;}if(x<=0){return 1;}x = (x+y)%p;if(y<=0){return 2;}y = (x+y)%p;
}
int main()
{cin>>t>>p;for(int i=0;i<t;i++){int x,y;cin>>x>>y;int g = a(x,y,p);switch (g) {//这里函数是数,可以用switch()来判断case 1:cout<<1;break;case 2:cout<<2;break;default:cout<<"error";break;}}return 0;
}
提交
喜提WA
****,***,居然不能到0是平局
不继续执行怎么判断不能到0呢?
看看数据大小
假如p
是10000,x,y
是0.5
那么只让函数执行10000次就可以知道了
最终代码
C++
#include<iostream>
using namespace std;
int p,t;
int a(int x,int y,int p,int oi){if(oi>10000){return 3;}if(x<=0){return 1;}x = (x+y)%p;if(y<=0){return 2;}y = (x+y)%p;return a(x,y,p,oi+1);
}
int main()
{cin>>t>>p;for(int i=0;i<t;i++){int x,y;cin>>x>>y;int g = a(x,y,p,0);switch (g) {case 1:cout<<1<<endl;break;case 2:cout<<2<<endl;break;default:cout<<"error"<<endl;break;}}return 0;
}