博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj1072: [SCOI2007]排列perm
阅读量:5245 次
发布时间:2019-06-14

本文共 1351 字,大约阅读时间需要 4 分钟。

hash判重一下就好了? 。。。暴力可以过啊。。。用set就可以了。。。 O(10!n)

#include
#include
#include
#include
#include
using namespace std;#define rep(i,s,t) for(int i=s;i<=t;i++)#define dwn(i,s,t) for(int i=s;i>=t;i--)#define clr(x,c) memset(x,c,sizeof(x))#define ll long longchar ch[20];set
s;int a[20];int main(){ int n;scanf("%d",&n); while(n--){ s.clear(); scanf("%s",ch+1);int d;scanf("%d",&d); ll tmp;int len=strlen(ch+1),ans=0; rep(i,1,len) a[i]=ch[i]-'0'; sort(a+1,a+len+1); while(1){ tmp=0; rep(i,1,len) tmp=tmp*10+a[i]; if(!s.count(tmp)&&tmp%d==0){ ans++;s.insert(tmp); } if(!next_permutation(a+1,a+len+1)) break; } printf("%d\n",ans); } return 0;}

  

1072: [SCOI2007]排列perm

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 1839  Solved: 1156
[][][]

Description

  给一个数字串s和正整数d, 统计s有多少种不同的排列能被d整除(可以有前导0)。例如123434有90种排列能

被2整除,其中末位为2的有30种,末位为4的有60种。

Input

  输入第一行是一个整数T,表示测试数据的个数,以下每行一组s和d,中间用空格隔开。s保证只包含数字0, 1

, 2, 3, 4, 5, 6, 7, 8, 9.

Output

  每个数据仅一行,表示能被d整除的排列的个数。

Sample Input

7
000 1
001 1
1234567890 1
123434 2
1234 7
12345 17
12345678 29

Sample Output

1
3
3628800
90
3
6
1398

HINT

 

在前三个例子中,排列分别有1, 3, 3628800种,它们都是1的倍数。

【限制】
100%的数据满足:s的长度不超过10, 1<=d<=1000, 1<=T<=15

 

Source

 
[ ][ ][ ]

转载于:https://www.cnblogs.com/fighting-to-the-end/p/5858139.html

你可能感兴趣的文章
Linux中防火墙centos
查看>>
hudson+apachecontinuum+ant
查看>>
mysql新建用户,用户授权,删除用户,修改密码
查看>>
实验五 TCP传输及加密
查看>>
【iOS】build diff: /../Podfile.lock: No such file or directory
查看>>
【Android Studio】使用 Genymotion 调试出现错误 INSTALL_FAILED_CPU_ABI_INCOMPATI
查看>>
FancyCoverFlow
查看>>
教你一分钟实现动态模糊效果
查看>>
C++中explicit的用法
查看>>
java 企业站源码 兼容手机平板PC 响应式 主流SSM框架 freemaker 静态引擎
查看>>
JS博客
查看>>
Docx转Doc操作(c#)
查看>>
一条简单的 SQL 执行超过 1000ms,纳尼?
查看>>
如何设置映射网络驱动器的具体步骤和方法
查看>>
ASP.NET WebApi 基于OAuth2.0实现Token签名认证
查看>>
283. Move Zeroes把零放在最后面
查看>>
Visual Studio Code 打开.py代码报Linter pylint is not installed解决办法
查看>>
Python 数据类型
查看>>
Google Guava学习笔记——简介
查看>>
历时八年,HTML5 标准终于完工了
查看>>