题意:

  包含4,7的数成为幸运数。给一个序列,求多少个长度为k子序列满足:不包含两个及以上的相同的幸运数。(4出现两次就是不合法的,而4,7各出现一次是合法的)。

分析:

  1e9内幸运数只有2^10个,所以可以全搜出来。然后对于序列中出现的幸运数,分别统计其出现的次数。然后对这些幸运数求出合法的方案数就行了。(此处合法是指选的数字满足不能一个数出现两次及以上)。dp[i][j]表示到第i个选了j个幸运数,然后转移即可。

  最后统计答案就是,枚举选了多少个幸运数,用上面的dp数组可以直接得到,然后在非幸运数中随便选了,构成k个即可。

代码:

 #include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<cctype>
#include<cmath>
#include<set>
#include<queue>
#include<vector>
#include<map>
using namespace std;
typedef long long LL; int read() {
int x = , f = ; char ch = getchar(); for (; !isdigit(ch); ch=getchar()) if (ch=='-') f = -;
for (; isdigit(ch); ch=getchar()) x = x * + ch - ''; return x * f;
} #define add(x,y) x+=y, x>=mod?x-=mod:x;
const int N = ;
const int mod = 1e9 + ; vector<int> num;
map<int,int> Id;
int cnt[N], a[N], dp[][], fac[N], ifac[N]; void dfs(int x,LL now) {
if (x == || now > 1e9) return ;
num.push_back(now);
dfs(x + , now * + );
dfs(x + , now * + );
} int ksm(int a,int b) {
int res = ;
while (b) {
if (b & ) res = 1ll * res * a % mod;
a = 1ll * a * a % mod;
b >>= ;
}
return res;
} void init(int n) {
dfs(, );
for (int i = ; i < num.size(); ++i) Id[num[i]] = i + ;
fac[] = ;
for (int i = ; i <= n; ++i) fac[i] = 1ll * fac[i - ] * i % mod;
ifac[n] = ksm(fac[n], mod - );
for (int i = n; i >= ; --i) ifac[i - ] = 1ll * ifac[i] * i % mod;
} int C(int n,int m) {
return 1ll * fac[n] * ifac[m] % mod * ifac[n - m] % mod;
} int main() { freopen("lucky.in","r",stdin);
freopen("lucky.out","w",stdout); init(); int n = read(), k = read(), m = num.size(), tot = n;
for (int i = ; i <= n; ++i) {
a[i] = read();
if (Id[a[i]]) cnt[Id[a[i]]] ++, tot --;
} dp[][] = ;
for (int i = ; i <= m; ++i) {
for (int j = ; j <= i; ++j) {
if (j) add(dp[i][j], 1ll * dp[i - ][j - ] * cnt[i] % mod);
add(dp[i][j], dp[i - ][j]);
}
} LL ans = ;
int L = max(, k - m), R = min(k, tot);
for (int i = L; i <= R; ++i) {
add(ans, 1ll * dp[m][k - i] * C(tot, i) % mod);
} cout << ans;
return ;
}

qbxt的题:运的更多相关文章

  1. 2019.10.1 qbxt模拟题

    第一题 考虑树上\(DP\),f[i][j][0/1]表示以\(i\)为根的子树,入读为零点的个数为\(j\),点\(i\)的入度为\(0\)/不为\(0\)时的方案数 转移的时候考虑\(u\)的一个 ...

  2. Qbxt 模拟题 day3(am) T3 选数字 (select)(贪心)

    选数字 (select Time Limit:3000ms Memory Limit:64MB 题目描述 LYK 找到了一个 n*m 的矩阵,这个矩阵上都填有一些数字,对于第 i 行第 j 列的位置上 ...

  3. qbxt的题:找一个三元环

    有向图中找一个三元环 题意: 考虑 N 个人玩一个游戏, 任意两个人之间进行一场游戏 (共 N*(N-1)/2 场),且每场一定能分出胜负.现在,你需要在其中找到三个人构成的这样的局面:A战胜B,B战 ...

  4. Qbxt 模拟题 day2(am) T2 jian

    [问题描述] 有N个数,随机选择一段区间,如果这段区间的所有数的平均值在[L,R]中则你比较厉害.求你比较厉害的概率. [输入格式] 第一行有三个数N, l, r,含义如上描述. 接下来一行有N个数代 ...

  5. Linux运维跳槽40道面试精华题

    Linux运维跳槽40道面试精华题 运维派 3天前 1.什么是运维?什么是游戏运维? 1)运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线与运作的正常,在他运转的过程中,对他进行维护 ...

  6. Qbxt AH d4 && day-6

    /* 这两天考试直接呵呵了. 赶脚对qbxt的题目无感. 同时也发现了自己的一些问题. 一些思路题总是自己傻逼的挖个坑跳进去. 这两天场场倒数ORZ. 始终是最弱的.... 然后NOIP光荣三等奖了吧 ...

  7. Linux运维跳槽必备的40道面试精华题(转)

    Linux运维跳槽必备的40道面试精华题(转)   下面是一名资深Linux运维求职数十家公司总结的Linux运维面试精华,助力大家年后跳槽找个高薪好工作. 1.什么是运维?什么是游戏运维? 1)运维 ...

  8. linux常见运维题

    linux运维题 一.填空题 1. 在Linux 系统 中,以文件方式访问设备 . (linux下一切都是文件) 2. Linux 内核引导时,从文件/etc/fstab中读取要加载的文件系统 . ( ...

  9. [真题] 一道 vsftp 运维题

    一道 vsftp 运维题 一.前言 在 V 站上凑巧看到了好友发的求助帖,五天时间一个理他的都没有.哈哈哈~ 废话不多说,我们来试试. 二.题目 这里我们假设存在这样的场景: 网络内有普通用户 ade ...

随机推荐

  1. Guava包学习---I/O

    Guava的I/O平时使用不太多,目前项目原因导致基本上只有在自己写一些文本处理小工具才用得到.但是I/O始终是程序猿最常遇到的需求和面试必问的知识点之一.同时Guava的I/O主要面向是时JDK5和 ...

  2. adb命令篇 (转载)

    转自:https://www.cnblogs.com/ailiailan/p/7896534.html 1.抓log方法  (bat文件)  mkdir D:\logcat set /p miaosh ...

  3. 9、Web Service-IDEA-jaxrs 服务端客户端的实现

    关于RestFul编程可以参考:https://www.cnblogs.com/wang-yaz/p/9237981.html 关于jaxrs的实现需要有restful的理解. 话不多说直接上代码!! ...

  4. 推荐一个WPF仪表盘开源控件

    前段时间,做服务器端监控系统,为了界面好看,采用WPF.硬件相关监控,比如CPU.内存等,想用仪表盘控件.网上找了很多这种控件,基本上都是第三方商业控件(虽然很漂亮,不过得money...).最后在C ...

  5. LORA芯片SX1272IMLTRT资料介绍

    升特公司(Semtech)(纳斯达克:SMTC)日前推出新型远程RFIC平台的首款产品SX1272,可将器件的无线传输距离扩大至15公里. 该器件集成了升特公司的新型LoRa(远程)调制技术,相比其他 ...

  6. [SCOI2005]互不侵犯(状压DP)

    嗝~算是状压DP的经典题了~ #\(\mathcal{\color{red}{Description}}\) 在\(N×N\)的棋盘里面放\(K\)个国王,使他们互不攻击,共有多少种摆放方案.国王能攻 ...

  7. ios - 沙盒和NSBundle

    沙盒 1.沙盒机制介绍 iOS中的沙盒机制是一种安全体系.每个iOS程序都有一个独立的文件系统(存储空间),而且只能在对应的文件系统中进行操作,此区域被称为沙盒.应用必须待在自己的沙盒里,其他应用不能 ...

  8. S/4 HANA中发票输出切换回NAST

    在S/4 HANA中,新的输出管理Output Management叫做SAP S/4HANA output control(输出控制),是基于BRF+的,而不是原来基于NAST的.关于S4新的输出控 ...

  9. MySQL学习【第五篇SQL语句上】

    一.mysql命令 1.连接服务端命令 1.mysql -uroot -p123 -h127.0.0.1 2.mysql -uroot -p123 -S /tmp/mysql.sock 3.mysql ...

  10. 【转】如何快速定位JVM中消耗CPU最多的线程?

    [转]如何快速定位JVM中消耗CPU最多的线程? https://mp.weixin.qq.com/s?__biz=MzIwMzg1ODcwMw==&mid=2247487802&id ...