1.直接令x=0,为了判断这一信息,对于所有含有多个1的yi,必然是无用的,答案至少为n且不能含有多位1的y
2.令yi=2^(i-1),由此发现一定可以得到x每一位的答案,即答案最多为n。
因此,发现方案数即n!,当$n\ge p$时答案一定为0,时间复杂度为o(p)
![[hdu6600]Just Skip The Problem_时间复杂度](https://s2.51cto.com/images/blog/202108/08/517a88380db85adfd515fc418df1c242.gif?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
![[hdu6600]Just Skip The Problem_数学-构造_02](https://s2.51cto.com/images/blog/202108/08/b1de8c08058f65212362d2b98e958148.gif?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define mod 1000003 4 int n,fac[mod]; 5 int main(){ 6 fac[0]=1; 7 for(int i=1;i<mod;i++)fac[i]=1LL*fac[i-1]*i%mod; 8 while (scanf("%d",&n)!=EOF) 9 if (n>=mod)printf("0\n"); 10 else printf("%d\n",fac[n]); 11 }