#include<cstdio>#include<cmath>#include<algorithm>#include<cstring>#define maxm 125#define mo 10007usingnamespace std;
int n,B,M,V,S,T,i,j,k,p;
int f[maxm],ff[maxm],g[maxm],gg[maxm];
int F[1<<11];
intmain(){
scanf("%d%d%d%d",&n,&B,&M,&V);
for(S=1;S<1<<B;S++){
memset(f,0,sizeof(f));
memset(g,0,sizeof(g));
for(i=0;i<B;i++) if ((S>>i)&1) g[i%M]++;
for(i=1;i<B;i++) if ((S>>i)&1) f[i%M]++;
p=B%M;
for(k=n-1;k;k/=2){
if (k&1){
memset(ff,0,sizeof(ff));
for(i=0;i<M;i++) if (f[i]) for(j=0;j<M;j++) if (g[j])
(ff[(i*p+j)%M]+=f[i]*g[j])%=mo;
memcpy(f,ff,sizeof(ff));
}
memset(gg,0,sizeof(gg));
for(i=0;i<M;i++) if (g[i]) for(j=0;j<M;j++) if (g[j])
(gg[(i*p+j)%M]+=g[i]*g[j]%mo)%=mo;
memcpy(g,gg,sizeof(gg));
p=p*p%M;
}
F[S]=f[V];
for(T=0;T<S;T++) if ((T&S)==T)
F[S]=(F[S]-F[T]+mo)%mo;
for(i=B-1;i>=0;i--) if ((S>>i)&1) printf("%d",i);
printf(" %d\n",F[S]);
}
}
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步