题目链接
题解
考虑容斥,答案就是∑i=kn(ik)×\sum_{i=k}^n\binom{i}{k}\times∑i=kn(ki)×至少iii个相同的方案数。这个用hash统计就可以了。
代码
#include#include int read(){ int x=0,f=1; char ch=getchar(); while((ch<'0')||(ch>'9')) { if(ch=='-') { f=-f; } ch=getchar(); } while((ch>='0')&&(ch<='9')) { x=x*10+ch-'0'; ch=getchar(); } return x*f;}const int maxn=1000000;const int maxv=1<<30;struct data{ int v[6];};namespace ht{ const int mod=1000003; int now[mod+10],tot,pre[maxn+10],cnt[maxn+10]; data val[maxn+10]; int clear() { memset(now,0,sizeof now); tot=0; return 0; } int gethash(data d,int ch) { int p=0; for(int i=0; i<6; ++i) { if(ch&(1<