hdu多校第二场 1010 (hdu6600)Just Skip This Problem
题意:
给你一个数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[1000006]; int main(){ LL n; ans[1]=1; for(int i=2;i<=MOD;i++){ ans[i]=ans[i-1]*i%MOD; } while(~scanf("%lld",&n)){ if(n>=MOD)printf("0\n"); else printf("%lld\n",ans[n]); } }