交互式水题,知道什么是交互式后,都能写出来
#include<bits/stdc++.h>
using namespace std;
#define mod 1000000007
#define PI acos(-1.0)
#define INF 0x3f3f3f3f
typedef long long LL;
typedef unsigned long long ULL;
int a[5050];
int n;
int x,y,z;
int main()
{
scanf("%d",&n);
printf("? 1 2\n");
fflush(stdout);
scanf("%d",&x);
printf("? 2 3\n");
fflush(stdout);
scanf("%d",&y);
printf("? 1 3\n");
fflush(stdout);
scanf("%d",&z);
a[2]=(x+y-z)/2;
a[1]=x-a[2];
a[3]=z-a[1];
for(int i=4;i<=n;i++){
printf("? 1 %d\n",i);
fflush(stdout);
scanf("%d",&z);
a[i]=z-a[1];
}
printf("!");
for(int i=1;i<=n;i++){
printf(" %d",a[i]);
}
return 0;
}
本文详细解析了一道交互式水题的算法实现过程,通过三次询问获取输入,利用数学运算推导出数组元素,最后输出结果。代码采用C++编写,展示了如何使用交互式方法解决问题。
386

被折叠的 条评论
为什么被折叠?



