题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1072

分析:看了题解才知道,状态的设计很巧妙,用余数表示,即f[i][j]表示二进制状态i下余数为j的方案数,然后列一列式子就可以了,注意排除相同数字的情况。

 #include<cstring>
#include<algorithm>
#include<cstdio>
#include<string>
using namespace std;
const int maxn=;
int f[maxn+][];
char s[];
int t,d;
int main()
{
scanf("%d\n",&t);
while(t)
{
--t;
scanf("%s%d\n",s,&d);
int n=strlen(s);
memset(f,,sizeof(f));
int m=(<<n) - ;
for(int i=;i<n;++i) f[<<i][(s[i]-)%d]=;
for(int i=;i<=m;++i)
for(int j=;j<n;++j)
if((i&(<<j))!= && i-(<<j)>=)
for(int k=;k<d;++k)
f[i][(*k+(s[j]-))%d]+=f[i-(<<j)][k];
for(int i=;i<=;++i)
{
int ans=;
for(int j=;j<n;++j)
if(s[j]-==i) ++ans;
int c=;
for(int j=;j<=ans;++j) c*=j;
f[m][]/=c;
}
printf("%d\n",f[m][]);
}
return ;
}

最新文章

  1. openfire/spark/asmack 环境调试纪要
  2. 20145227 《Java程序设计》第6周学习总结
  3. [转载]浅析STL allocator
  4. 使用pdb调试python
  5. Ubuntu16.04更换漂亮绚丽flatabulous主题
  6. C# yield return用法
  7. Firebird数据库相关操作
  8. 深度学习Tensorflow生产环境部署(上&#183;环境准备篇)
  9. Vue.js 基本功能了解一下~
  10. git branch 分支管理
  11. PostgreSQL的checkpoint能否并行
  12. css控制字体线使用:text-decoration
  13. centos使用boost过程
  14. malloc,我误解你了
  15. python操作word之pywin32的安装
  16. Camera &amp; Render
  17. 使用Intent调用内置应用程序
  18. Educational Codeforces Round 51 (Rated for Div. 2)
  19. 在无TNS配置时,登录到数据库。
  20. 【jQuery】方法和选择器的双重使用详解

热门文章

  1. Linux安装PHP环境
  2. 简单几何(水)BestCoder Round #50 (div.2) 1002 Run
  3. windows 定时任务 设置 安全事项
  4. HTML——meta
  5. Navicat Premium 12 破解方法
  6. java如何区分同时继承的父类和实现的接口中相同的方法
  7. JMeter在linux上分布式压测步骤(二)
  8. C# 字符串每隔两个 提取
  9. sort 及lambda表达式定制排序
  10. Vue指令7:v-model