题目描述
小 X 和 小 Y 一起去吃圆形披萨,他们把披萨分成了 16 等份,如下图所示。
小 X 想吃 a 块,小 Y 想吃 b 块,但是同一个人不能同时拿相邻的两片披萨。
他们想知道能不能吃到想吃的片数?
输入
读入两个整数 a 和 b。
输出
如果可以输出 Yes,否则输出 No。
样例
输入
5 4
输出
Yes
输入
8 8
输出
Yes
输入
11 4
输出
No
说明
数据范围1≤a,b≤16。
C++
#include <iostream>
#include <algorithm>
using namespace std;
// 判断是否可以吃到想吃的片数
bool canEatPizza(int a, int b) {
// 计算剩余的片数
int remaining = 16 - max(a, b);
// 如果剩余的片数大于等于 min(a, b),则可以吃到想吃的片数
if (remaining >= min(a, b)) {
return true;
}
// 否则无法吃到想吃的片数
return false;
}
int main() {
int a, b;
cin >> a >> b; // 输入 a 和 b
if (canEatPizza(a, b)) {
cout << "Yes" << endl; // 可以吃到想吃的片数
} else {
cout << "No" << endl; // 无法吃到想吃的片数
}
return 0;
}
JAVA
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
int b = scanner.nextInt();
if (a < b) {
int temp = a;
a = b;
b = temp;
}
if (a - b >= 2) {
System.out.println("Yes");
} else {
System.out.println("No");
}
}
}
Python
根据题目描述,我们可以编写以下的Python代码来解决这个问题:
a, b = map(int, input("请输入小X和小Y想吃的披萨片数(空格分隔): ").split())
# 检查是否可以吃到想要的片数
def can_eat(a, b):
if a > b:
a, b = b, a # 保证 a <= b
if b <= 2 * (a + 1):
return True
return False
if can_eat(a, b):
print("Yes")
else:
print("No")
在这段代码中,我们首先通过input
函数让用户输入小X和小Y想吃的披萨片数,并使用map
函数将输入的两个整数分别赋值给变量a
和b
。
然后,我们定义了一个函数can_eat
来检查是否可以吃到想要的片数。在函数中,我们首先通过比较大小,将a
和b
中较小的值赋给a
,较大的值赋给b
,以方便后续的计算。然后,我们使用条件判断来判断是否可以吃到想要的片数。根据题目要求,当b
的值小于等于2 * (a + 1)
时,表示可以满足条件,返回True
;否则返回False
。
最后,我们在主程序中调用can_eat
函数,并根据返回值打印出相应的结果。
你可以运行这段代码,并输入示例中的输入进行测试,看看是否得到了正确的输出。
如果还有其他问题,请随时向我提问!