ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

洛谷 P5635 【CSGRound1】天下第一

洛谷 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;
}
返回列表