描述:
题意:
给你一个序列,长度为n,你事先不知道这个序列是什么,你可以问n个问题,每个问题为ai+aj等于多少,最后输出这个序列
思路:
先问3个问题算出前3个,后面直接推就好了,然后就是注意交互题的格式
代码:
#include <bits/stdc++.h>
#define rep(i,k,n) for(int i=k;i<=n;i++)
using namespace std;
const int N=5010;
int a[N], n;
int ask(int i, int j){
int res;
cout<<"? "<<i<<' '<<j<<endl;
fflush(stdout);
cin>>res;
return res;
}
int main(){
cin>>n;
int x = ask(1, 2);
int y = ask(1, 3);
int z = ask(2, 3);
a[1] = (x + y - z) / 2;
a[2] = x - a[1];
a[3] = y - a[1];
rep(i, 3, n-1){
int res = ask(i, i+1);
a[i + 1] = res - a[i];
}
cout<<"! ";
rep(i, 1, n){
cout<<a[i]<<' ';
}
cout<<endl;
return 0;
}
/*5
10
5
7
6
10*/