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]);
    }
}

 

posted @ 2019-07-26 08:31  Isakovsky  阅读(361)  评论(0编辑  收藏  举报