题意:

给你一个数x,允许你多次询问yi,然后回答你x xor yi 是否等于yi,询问尽量少的次数以保证能求出xi是几,求出这样询问次数最少的询问方案数。

结果mod1e6+3

题解:

队友赛时很快想(cai)出最优方案是每次只让yi的一位是1,因此最优方案数是n!

然后很快wa/t到哭

粘了个几百行的二分求阶乘的板子,预处理出一堆0,一脸懵逼地除虫

最后终于发现,TMD,n!mod 1e6+3 在n>=1e6+3的情况下,都等于0

#include<iostream>
#define MOD 1000003
#define LL long long
using namespace std;
LL ans[];
int main(){
LL n;
ans[]=;
for(int i=;i<=MOD;i++){
ans[i]=ans[i-]*i%MOD;
}
while(~scanf("%lld",&n)){
if(n>=MOD)printf("0\n");
else printf("%lld\n",ans[n]);
}
}
05-27 22:36