题意
将n(n<=10^18)的各位数字重新排列(不允许有前导零)  求  可以构造几个mod m等于0的数字
解法
状压
f[S][k] 表示选用的位数集合为S,mod m 为k的方案数
注意不能有前导0
但是这样做是有缺陷的
状压本质上是将每个数按下标强行看作不同的数
因此有重复统计的情况
比如n=11,方案只有1种,状压会有2种
根据多重集合的排列,如果一个数字出现了cnt次,那么答案会被重复计算cnt!次,答案需要除以cnt!
上代码

#include<iostream>
#include<cstring>
#define int long long
using namespace std;
const int maxs=(<<)+,maxm=;
int w[],cnt=-,m,n,f[maxs][maxm];
bool vis[];
signed main()
{
for(cin>>n>>m;n;n/=)
w[++cnt]=n%;
f[][]=;
for(int s=;s<<<cnt+;s++)
{
memset(vis,,sizeof(vis));
for(int i=;i<=cnt;i++)
{
if(s==(<<i)&&!w[i])
break;
if(!(s&(<<i))||vis[w[i]])
continue;
vis[w[i]]=;
for(int j=;j<m;j++)
f[s][(j*+w[i])%m]=f[s][(j*+w[i])%m]+f[s^(<<i)][j];
}
}
cout<<f[(<<cnt+)-][]<<endl;
return ;
}

最新文章

  1. java中的泛型的使用与理解
  2. Datatable常用系列一
  3. JSON,Bean,XML,List,Map
  4. EHcache缓存框架详解
  5. js中十进制数转换为16进制
  6. 分享一个Object.defineProperties 定义一个在原对象可读可写的方法
  7. NativeScript - JS 构建跨平台的原生 APP
  8. Centos以rpm方式进行安装MySql
  9. Memcached入门
  10. poj 2503 Babelfish (查找 map)
  11. linux_tomcat7服务器日志爆满导致java崩溃的问题
  12. CSS实现垂直居中的常用方法
  13. Flashback version/Transaction Query,FlashbackTable
  14. spring boot --- 初级体验
  15. 关于浏览器跨域的一种实现--jsonp
  16. c/c++ 类成员变量,成员函数的存储方式,以及this指针在c++中的作用
  17. 问题8:手机端实现点击按钮时更换颜色(解决IOS不显示背景)
  18. PTA——洗牌
  19. Django 2.0.1 官方文档翻译:编写你的第一个djang补丁(page 15)
  20. Python多线程爬虫

热门文章

  1. https 协议信息查看
  2. etcd启用https服务
  3. 编写可维护的js代码
  4. PHP基础知识之————匿名函数(Anonymous functions)
  5. 生成电脑的ssh key值
  6. c# dev GridControl多选当前行显示样式问题
  7. 关于安装在win10上的oracle10g 兼容性问题
  8. 【Swift】UIAlertController使用
  9. [转载]Javascript 同步异步加载详解
  10. 线搜索(line search)方法