[hdu6600]Just Skip The Problem

1.直接令x=0,为了判断这一信息,对于所有含有多个1的yi,必然是无用的,答案至少为n且不能含有多位1的y
2.令yi=2^(i-1),由此发现一定可以得到x每一位的答案,即答案最多为n。
因此,发现方案数即n!,当$n\ge p$时答案一定为0,时间复杂度为o(p)

 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 }
View Code
原文地址:https://www.cnblogs.com/PYWBKTDA/p/11260649.html