2021常州市“信息与未来”程序设计小能手比赛试题--书页

注:本题文件名为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;
}

这道题目就这么多(明天写书页加强版)。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值