P4163 [SCOI2007]排列
Posted sfwr-you
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P4163 [SCOI2007]排列相关的知识,希望对你有一定的参考价值。
——————————————————————————————————————————————————————————-
发出不适的粗口
被循环变量坑了half hour
淦
用余数来记录选用当前的数所构成的形态,算是附加信息。
还要练练搜索的说
————————————————————————————————————————————————————————
#include<bits/stdc++.h>
using namespace std;
int t,num[20],len,md,cnt[10],f[1050][1010];
char ch[20];
int main()
cin>>t;
while(t--)
memset(cnt,0,sizeof(cnt));memset(f,0,sizeof(f));
cin>>ch>>md;len=strlen(ch);f[0][0]=1;
for(int i=1;i<=len;i++)num[i]=ch[i-1]-‘0‘;cnt[num[i]]++;
for(int i=0;i<=(1<<len)-1;i++)
for(int j=1;j<=len;j++)if(!(i&(1<<j-1)))
for(int k=0;k<md;k++)f[i^(1<<j-1)][((10*k)+num[j])%md]+=f[i][k];
int ans=f[(1<<len)-1][0];
for(int i=0;i<=9;i++)for(int j=2;j<=cnt[i];j++)ans/=j;
cout<<ans<<endl;
以上是关于P4163 [SCOI2007]排列的主要内容,如果未能解决你的问题,请参考以下文章