G. 我是猜拳大王
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
G. 我是猜拳大王
题目描述
这是一道交互题。
放学路上,高木同学和西片在玩猜拳游戏。
游戏中,高木同学总是能猜中西片的内心。西片一连输掉几局后,高木同学提出:接下来的比试,我只会出"石头"(R)和"布"(P)。
在猜拳比赛中,获胜的一方记一分,失败的一方扣一分,平局则双方均不加分。其中:石头(R)能赢过剪刀(S),剪刀(S)能赢过布(P),布(P)又能胜过石头(R)。
你能帮助西片,取得尽可能高的分数吗?
输入格式
第一行两个整数 $n(10^3\le n\le 20000), m(-\frac{3n}{10}\le m\le \frac{3n}{10})$,表示你需要进行 场比试,结束后你需要获得至少 分。
样例仅作为演示,并不符合这一要求。
交互方式
如果你需要进行一次猜拳,你 必须 输入一个字符 "R"、"P"或 "S",分别表示石头、布或剪刀。
在输出结束,并刷新缓冲区后,你可以从标准输入中读取高木同学的选择,包括一个字符"R"或者"P"。当然,你也可以忽略这一信息。
注意,在输出结束后,你 必须 刷新缓冲区。 例如,
- 在C++ 中你可以使用 fflush(stdout)。
- 在Java 中你可以使用 System.out.flush()。
- 在Pascal中你可以使用flush(output)
- 在Python中你可以使用 sys.stdout.flush()
Takagi-san 不会根据你的出拳结果更改策略。
样例输入
3 0
R
P
R
样例输出
R
S
P
数据范围与约定
对于前 的数据,
对于中间 的数据,
对于后 的数据,
C语言示例代码
#include <stdio.h>
int main()
{
int n, m;
scanf("%d%d", &n, &m);
for(int i=1;i<=n;i++)
{
printf("R\n");
fflush(stdout);// 注意,不要忘记刷新缓冲区!
char c; scanf("%c", &c); // 这是从评测机获取的,高木同学的出拳结果
}
return 0;
}
C++示例代码
#include <iostream>
int main()
{
int n, m;
std::cin >> n >> m;
for(int i=1;i<=n;i++)
{
std::cout << "R" << std::endl; // cout << endl 之后,会自动刷新缓冲区。
char c; std::cin >> c; // 这是从评测机获取的,高木同学的出拳结果
}
return 0;
}
Python 示例代码
n, m = map(int, input().split())
for i in range(1, n+1):
print("R")
sys.stdout.flush()
c = input()
NNU Freshman Warm-up Contest
- 状态
- 已结束
- 规则
- 乐多
- 题目
- 8
- 开始于
- 2023-11-4 8:00
- 结束于
- 2023-11-4 20:00
- 持续时间
- 12 小时
- 主持人
- 参赛人数
- 91