#P2S2. Interactive A+B Problem
Interactive A+B Problem
这是一道选做题
本题的核心解法与第二题 "A+B Problem" 近乎完全相同,区别是本题为交互题,旨在帮助各位对交互题形式有一定的了解(正式比赛中有可能会出现)。但由于相关的代码和语法内容有一定理解难度,如果实在无法理解可以先跳过本题。
Background
- 欢迎来到交互入门的学习!
- 所谓 "交互",就是做题者和评测系统之间的对话。在确定答案之前,你输出的每一份符合格式的内容都代表你向评测机发起了一次 询问,评测机会以输入的形式给出符合题意的回复。然后你只需按照题目所给信息,判断 是否已经得出答案 或者 还需继续询问 即可。当然,你需要满足某些题的特定需求,比如说询问次数不可以超过 。
- 注意: 请在输出之后,加一行 。这是因为正常情况下你的每次输出都只是被储存到了缓存区,没有真正的输出到程序外部,导致交互程序读取不到你的输出。所以需要调用 方法把缓存区的东西一次性全部输出。更形象的说,就好像人们平时上厕所,在输出完一个阶段的内容后,都会按下马桶的冲水按钮把输出的内容冲掉,再进行下一阶段的输出。这里的 就相当于马桶的冲水按钮。
下面给出 的输出方式:
-
printf(233); fflush(stdout);
-
cout << 233 << '\n'; cout.flush();
-
System.out.println(233); System.out.flush();
-
print(233) stdout.flush()
题目描述
输入两个整数,,求这两个整数的和。
交互方法
本题包含多组测试用例。 第一行给定一个整数 ,代表测试用例的数量。 接下来,对于每组测试用例,你需要读入一行两个整数 , ,并输出两个整数的和。
- 在输出一个数之后,你需要按照上述的代码,加一句 ,以防得到错误判定。
在输出之后,你需要读入一个字符串 ,代表程序对你的答案的判定。如果 为 ok
,那么你可以继续执行你的代码,否则你需要立即退出你的代码,以防得到 Runtime Error: Killed 判定。
如果你还是不知道怎么交互,可以开翻译阅读一下 codeforces
的官方介绍:
Interactive Problems: Guide for Participants - Codeforces
2
1 2
ok
61 6
ok
3
67
提示
本题部分语言程序实现范例
C
#include <stdio.h>
#include <string.h>
int main(){
int t;
scanf("%d", &t);
while(t --){
int a, b;
scanf("%d%d", &a, &b);
printf("%d\n", a + b);
fflush(stdout);
char v[50];
scanf("%s", v);
if(strcmp(v, "ok") != 0){
return 0; //直接退出
}
}
return 0;
}
C++
#include <bits/stdc++.h>
using namespace std;
int main(){
int t;
cin >> t;
while(t --){
int a,b;
cin >> a >> b;
cout << a + b << '\n';
cout.flush();
string v;
cin >> v;
if(v != "ok"){
return 0; //直接退出
}
}
return 0;
}
Python3
from sys import stdout, exit
t = int(input().strip())
for _ in range(t):
a, b = map(int, input().strip().split())
print(a + b)
stdout.flush()
v = input().strip()
if v != 'ok':
exit()
Java
import java.util.*;
public class Main {
public static void main(String args[]) throws Exception {
Scanner scanner = new Scanner(System.in);
int t = scanner.nextInt();
while(t -- > 0){
int a = scanner.nextInt(), b = scanner.nextInt();
System.out.println(a + b);
System.out.flush();
String v = scanner.next();
if(!v.equals("ok")){
return; //直接退出
}
}
}
}
相关
在下列比赛中: