标签:opened names splay tar stdout printf https src lap
交互题。
因为这个数最多只有14位 0~13,所以我们可以先处理后面7位,然后再处理后面7位。
因为异或的性质,如果一个数和0异或,那么就等于本身。
所以我们第一次异或1~100 所以 后面从7到13位就都是0,所以结果的后面的7位就可以算出来。
然后同理可以把前面七位找到。
#include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> #include <queue> #include <vector> #include <iostream> #include <string> #include <map> #define inf 0x3f3f3f3f #define inf64 0x3f3f3f3f3f3f3f3f using namespace std; const int maxn = 3e5 + 10; typedef long long ll; int main() { ll ans = 0; printf("?"); for (int i = 1; i <= 100; i++) printf(" %d", i); printf("\n"); fflush(stdout); ll num; scanf("%lld", &num); for(int i=7;i<14;i++) ans += ((num >> i) & 1) << i; printf("?"); for (int i = 1; i <= 100; i++) printf(" %d", i << 7); printf("\n"); fflush(stdout); scanf("%lld", &num); for (int i = 0; i < 7; i++) ans += ((num >> i) & 1) << i; printf("! %lld\n", ans); return 0; }
E. XOR Guessing 交互题 Educational Codeforces Round 71 (Rated for Div. 2)
标签:opened names splay tar stdout printf https src lap
原文地址:https://www.cnblogs.com/EchoZQN/p/11407253.html