注:本题文件名为book
题目描述
小X把一本书平摊在桌面上。这本书的页码是连续的,从一到N。现在他告诉你书本上书本左右两页的页码是什么,请你回答他翻到第A页时,第A页是在左边还是右边。
输入
第一行1个正整数N,表示这本书的页码从1标号到N。
第二行2个正整数,表示这本书左右两页的页码P1和P2.
第三行1个正整数,表示小X想问你第A页是在右边还是左边。
输出
如果第A页在左边,输出"L";如果第A页在右边,输出"R"。(均不包含引号)
样例组
样例1
输入
5
2 3
1
输出 R
样例2
输入
5
2 3
4
输出 L
数据范围
对于40%的数据,A为p1,p2中的一个。
对于100%的数据,1<=P1,P2,A<=N<=1000。
解题思路
这道题目就是一道简单无比的if题。读入数据,用if判断a%2是否等于p1%2(或p2%2),同时直接输出就完事。
一些简单的"优化"
这道题目用这种思路能过,但是可以在以下几点上进行优化。
首先,按照题目上所说的按三行输入,就会这样写输入程序:
int n,p1,p2,a;
void dr()
{
cin>>n;
cin>>p1>>p2;
cin>>a;
}
但是这样实在是太麻烦了。所以我们可以直接一行完成读入。
int n,p1,p2,a;
cin>>n>>p1>>p2>>a;
因为这道题目在读入前不需要做任何操作(除定义变量外),而且这道题连循环都不要用,完全可以一次性读入。(管他分几行读入,只要程序能写对,这些芝麻蒜皮的小细节要多写几行吗?而且这道题几乎没有难度)
这样的话程序如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,p1,p2,a;
cin>>n>>p1>>p2>>a;
if(a%2==p1%2) cout<<"L";
else cout<<"R";
return 0;
}
那这道题还能再简单一点吗?当然可以。
我们可以用=?:的三元组来简化程序。这样的话,原来两行的if就变成了一行,而且运行速度也没有变慢,程序就会变成这个样子:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,p1,p2,a;
cin>>n>>p1>>p2>>a;
cout<<(a%2==p1%2?'L':'R');
return 0;
}
这道题目就这么多(明天写书页加强版)。