Light oj 1021 - Painful Bases
题意: 给一个B进制的数,一个10进制的数K,B进制数有x位,
对着x位进行全排列的话,有x!种可能,
问这x!的可能中,有多少种可以整除K,各个位置上的数字都不同。
思路:状态压缩,数位DP
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<vector>
#include<set>
#include<queue>
#include<string>
#include<algorithm>
#define MAXSIZE 70000
#define LL long long
using namespace std;
const long long INF = 1e18; //给一个B进制的数,一个10进制的数K,B进制数有x位,
//对着x位进行全排列的话,有x!种可能,
//问这x!的可能中,有多少种可以整除K,各个位置上的数字都不同。 LL dp[MAXSIZE][];
int b,k,bit[MAXSIZE],len;
char str[MAXSIZE];
LL dfs(int pos,int st,int mod)
{
if(pos < )
return mod == ;
if(dp[st][mod] != -)
return dp[st][mod];
LL ans = ;
for(int i=;i<len;i++)
{
if(st & (<<i))
continue;
else
{
ans += dfs(pos-,st|(<<i),((mod*b)+bit[i])%k);
}
} dp[st][mod] = ans;
return ans;
} LL Solve()
{
memset(dp,-,sizeof(dp)); len = strlen(str);
int pos = ;
for(int i=;i<len;i++)
{
if(str[i] >='' && str[i] <= '')
bit[pos++] = str[i] - '';
else
bit[pos++] = str[i] - 'A' + ;
} LL ans = dfs(pos-,,); return ans;
} int main()
{
int T,cns=;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&b,&k);
scanf("%s",str);
LL ans = Solve();
printf("Case %d: %lld\n",cns++,ans);
}
return ;
}
Light oj 1021 - Painful Bases的更多相关文章
- Light OJ 1021 - Painful Bases(状态压缩DP)
题目大意: 给你一个base 进制的数字,把这个数字的每一位进行全排列,问有多少个数字是可以整除k的. 题目解析: #include<cstdio> #include<cstring ...
- 1021 - Painful Bases
1021 - Painful Bases PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB As ...
- lightoj 1021 - Painful Bases 状态压缩
题目链接:http://lightoj.com/volume_showproblem.php?problem=1021 #include<cstring> #include<cstd ...
- lightoj 1021 - Painful Bases(数位dp+状压)
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1021 题解:简单的数位dp由于总共就只有16个存储一下状态就行了.求各种进制能 ...
- Painful Bases LightOJ - 1021
Painful Bases LightOJ - 1021 题意:给出0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F中的一些字符(不重复)还有一个进制base,求这些字符的排列形成的ba ...
- K - Painful Bases 状压dp
Painful Bases LightOJ - 1021 这个题目一开始看,感觉有点像数位dp,但是因为是最多有16进制,因为限制了每一个数字都不同最多就有16个数. 所以可以用状压dp,看网上题解是 ...
- Light OJ 1114 Easily Readable 字典树
题目来源:Light OJ 1114 Easily Readable 题意:求一个句子有多少种组成方案 仅仅要满足每一个单词的首尾字符一样 中间顺序能够变化 思路:每一个单词除了首尾 中间的字符排序 ...
- Light OJ 1429 Assassin`s Creed (II) BFS+缩点+最小路径覆盖
题目来源:Light OJ 1429 Assassin`s Creed (II) 题意:最少几个人走全然图 能够反复走 有向图 思路:假设是DAG图而且每一个点不能反复走 那么就是裸的最小路径覆盖 如 ...
- Light OJ 1406 Assassin`s Creed 减少国家DP+支撑点甚至通缩+最小路径覆盖
标题来源:problem=1406">Light OJ 1406 Assassin`s Creed 意甲冠军:向图 派出最少的人经过全部的城市 而且每一个人不能走别人走过的地方 思路: ...
随机推荐
- HDU 1880 魔咒词典 (Hash)
魔咒词典 Time Limit: 8000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- phpmyadmin拿webshell
思路:就是利用mysql的一个日志文件.这个日志文件每执行一个sql语句就会将其执行的保存.我们将这个日志文件重命名为我们的shell.php然后执行一条sql带一句话木马的命令.然后执行菜刀连接之! ...
- 学习笔记(node.js)
因为做的笔记太多了,所以就直接发到百度云盘了. 第一天:是关于环境的配置,以及简单的练习. 云盘链接地址:链接:https://pan.baidu.com/s/1WLWtyTKWaQ32JpDUCF2 ...
- Vue less使用scope时渗入修改子组件样式
@deep: ~'>>>'; .wrap { @{deep} .component1 { width: 120px; } }
- Win7下mysql的安装
一.简述 mysql与oracle相比小,便宜,装机量大,下载地址:https://www.mysql.com/downloads/,去找Community Edition,然后根据自己的Window ...
- docker安装优化
1.优化 #关闭防火墙 [root@docker03 ~]# systemctl stop firewalld.service [root@docker03 ~]# systemctl disable ...
- jdk7 并行计算框架Fork/Join
故名思义,拆分fork+合并join.jdk1.7整合Fork/Join,性能上有大大提升. 思想:充分利用多核CPU把计算拆分成多个子任务,并行计算,提高CPU利用率大大减少运算时间.有点像,Map ...
- SQL优化笔记一:索引和explain
目录 为什么需要优化SQL SQL优化的重点 索引 索引的结构 索引的优缺点总结: 索引的分类 索引操作 B树 实战 问题 数据库方面,我会使用MySQL来讲解 为什么需要优化SQL 性能低,执行时间 ...
- Mark标记功能的实现(像手工标记的一样)
今天看到一个网站的标记功能,觉得很不错,先记录一下,emm <!DOCTYPE html> <html lang="en"> <head> &l ...
- Linux记录-JMX监控Tomcat上传到falcon
1.登录测试服务器xxxxxx xxxxxx su root输入xxxx 2.先修改Tomcat的启动脚本,(linux下为catalina.sh),添加以下内容: CATALINA_OPTS=&qu ...