XOR Guessing(CF 1207 E)
阿新 • • 發佈:2022-05-21
題目大意
這是一道互動題。有一個未知數\(x\),你只能詢問兩次,每次詢問\(100\)個數\(a_1,a_2,\dots,a_{100}\),且這\(200\)個數不能重複,每次詢問,會返回\(x\)異或上詢問的\(100\)個數中其中一個的結果,最後讓你輸出這個數\(x\)是多少。\((0\le x\le 2^{14}-1)\)
思路
這題感覺思路還是挺妙的,我們把這個數分成前\(7\)位和後\(7\)位來看,這樣只要保證第一次詢問的所有數的前\(7\)位都為\(0\),則就能知道這個數的前\(7\)位了,後\(7\)位亦然,於是這道題就結束了。
程式碼
#include<bits/stdc++.h> using namespace std; int main() { cout<<"? "; for(long long i=1;i<=100;i++)cout<<i<<" "; cout<<endl; fflush(stdout); long long x1;cin>>x1; cout<<"? "; for(long long i=1;i<=100;i++)cout<<(i<<7)<<" "; cout<<endl; fflush(stdout); long long x2;cin>>x2; x1>>=7;x1<<=7; x2%=(1<<7); cout<<"! "<<x1+x2<<endl; return 0; }