题目
传送门
input 6 5 15 10 output ? 1 2 ? 5 6 ? 3 4 ! 1 4 4 6 7 8
题意:第一道交互题,首先给你一个数n说明有n个笼子,你最多能问n次,对于你的询问,机器会给出答案,问:每个笼子里各有几只火烈鸟
思路:每次询问我们至少得出一个笼子中有几只,例如我们先问1-2,1~3,这样我们就会知道第三个笼子有几只,这样问到1-n,问了n-1次,我们最后问一次2-3就可以得到第二个笼子有几只,我们有1-2,进而得出第一个笼子中的数量,这样就可以了,注意:每个输出语句后面加上. fflush(stdout);
AC code
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<map>
#include<sstream>
#include<stack>
#include<queue>
using namespace std
;
#define ll long long
ll n
,t
,a
[1200];
void solve()
{
ll p
,q
,x
,y
;
int flag
=1;
for(int i
=2;i
<=n
;i
++)
{
printf("? 1 %d\n",i
);
fflush(stdout);
if(flag
)
{cin
>>p
;
x
=p
;
flag
=0;}
else
{
cin
>>q
;
a
[i
]=q
-p
;
p
=q
;
}
}
printf("? 2 3\n");
fflush(stdout);
cin
>>y
;
a
[2]=y
-a
[3];
a
[1]=x
-a
[2];
printf("!");
for(int i
=1;i
<=n
;i
++)
printf(" %d",a
[i
]);
printf("\n");
fflush(stdout);
}
int main()
{
ios
::sync_with_stdio(0);
cin
>>n
;
solve();
}