传送门——Vjudge


第一问很氵,如果\(K,N\)同奇偶就是\(2^K-1\),否则就是\(2^K-2\)

第二问似乎是可重排列,考虑指数型生成函数。

如何限制某些数必须要出现奇数/偶数次?考虑\(\frac{e^x-e^{-x}}{2}\),可以发现它的展开式中只有次数为奇数的项有值,而\(\frac{e^x+e^{-x}}{2}\)只有次数为偶数的项有值。

于是当\(K,N\)同奇偶时答案是\(N!(\frac{e^x-e^{-x}}{2})^K\),否则是\(N!(\frac{e^x-e^{-x}}{2})^{K-1}\frac{e^x+e^{-x}}{2}\)

暴力二项式定理拆开\((\frac{e^x - e^{-x}}{2})^K\)就可以算了。

#include<iostream>
#include<cstdio>
//This code is written by Itst
using namespace std; inline int read(){
int a = 0;
char c = getchar();
while(!isdigit(c))
c = getchar();
while(isdigit(c)){
a = a * 10 + c - 48;
c = getchar();
}
return a;
} const int MOD = 1e9 + 7;
inline int poww(long long a , int b){
int times = 1;
a = (a + MOD) % MOD;
while(b){
if(b & 1) times = times * a % MOD;
a = a * a % MOD;
b >>= 1;
}
return times;
} const int MAXN = 1e5 + 7;
int T , N , K , jc[MAXN] , inv[MAXN]; void init(){
jc[0] = 1;
for(int i = 1 ; i <= 1e5 ; ++i)
jc[i] = 1ll * jc[i - 1] * i % MOD;
inv[100000] = poww(jc[100000] , MOD - 2);
for(int i = 1e5 - 1 ; i >= 0 ; --i)
inv[i] = inv[i + 1] * (1ll + i) % MOD;
} int binom(int b , int a){
return b < a ? 0 : 1ll * jc[b] * inv[a] % MOD * inv[b - a] % MOD;
} int main(){
#ifndef ONLINE_JUDGE
freopen("in","r",stdin);
//freopen("out","w",stdout);
#endif
init();
for(T = read() ; T ; --T){
N = read(); K = read();
if((N ^ K) & 1){
cout << poww(2 , K) - 2 << ' ';
int ans = 0;
for(int i = 0 ; i < K ; ++i)
ans = (ans + (i & 1 ? -1ll : 1ll) * binom(K - 1 , i) * (poww(K - 1 - 2 * i + 1 , N) + poww(K - 1 - 2 * i - 1 , N)) % MOD + MOD) % MOD;
cout << 1ll * ans * poww(poww(2 , K) , MOD - 2) % MOD << '\n';
}
else{
cout << poww(2 , K) - 1 << ' ';
int ans = 0;
for(int i = 0 ; i <= K ; ++i)
ans = (ans + (i & 1 ? -1ll : 1ll) * binom(K , i) * poww(K - 2 * i , N) % MOD + MOD) % MOD;
cout << 1ll * ans * poww(poww(2 , K) , MOD - 2) % MOD << '\n';
}
}
return 0;
}

Codechef CNTL Counting is life 生成函数的更多相关文章

  1. Codechef TAPAIR Counting the important pairs 随机化、树上差分

    传送门 题意:给出一个$N$个点.$M$条边的无向连通图,求有多少组无序数对$(i,j)$满足:割掉第$i$条边与第$j$条边之后,图变为不连通.$N \leq 10^5 , M \leq 3 \ti ...

  2. scau 2015寒假训练

    并不是很正规的.每个人自愿参与自愿退出,马哥找题(马哥超nice么么哒). 放假第一周与放假结束前一周 2015-01-26 http://acm.hust.edu.cn/vjudge/contest ...

  3. bzoj 3509: [CodeChef] COUNTARI] [分块 生成函数]

    3509: [CodeChef] COUNTARI 题意:统计满足\(i<j<k, 2*a[j] = a[i] + a[k]\)的个数 \(2*a[j]\)不太好处理,暴力fft不如直接暴 ...

  4. CodeChef Counting on a directed graph

    Counting on a directed graph Problem Code: GRAPHCNT All submissions for this problem are available. ...

  5. Counting The Important Pairs CodeChef - TAPAIR

    https://vjudge.net/problem/CodeChef-TAPAIR 合法的删除方法: 第一种:桥边与其余任意边(1)桥*(桥-1)/2(两条桥边)(2)桥*(m-桥)(桥边+其他边) ...

  6. 2019.01.02 poj3046 Ant Counting(生成函数+dp)

    传送门 生成函数基础题. 题意:给出nnn个数以及它们的数量,求从所有数中选出i∣i∈[L,R]i|i\in[L,R]i∣i∈[L,R]个数来可能组成的集合的数量. 直接构造生成函数然后乘起来f(x) ...

  7. bzoj 2023: [Usaco2005 Nov]Ant Counting 数蚂蚁【生成函数||dp】

    用生成函数套路推一推,推完老想NTT--实际上把这个多项式乘法看成dp然后前缀和优化一下即可 #include<iostream> #include<cstdio> using ...

  8. 【xsy2479】counting 生成函数+多项式快速幂

    题目大意:在字符集大小为$m$的情况下,有多少种构造长度为$n$的字符串$s$的方案,使得$C(s)=k$.其中$C(s)$表示字符串$s$中出现次数最多的字符的出现次数. 对$998244353$取 ...

  9. 【BZOJ】1630: [Usaco2007 Demo]Ant Counting(裸dp/dp/生成函数)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1630 题意,给你n种数,数量为m个,求所有的数组成的集合选长度l-r的个数 后两者待会写.. 裸dp ...

随机推荐

  1. log4j.properties配置说明

    log4j.properties配置说明 1. log4j配置 # ALL,DEBUG,INFO,WARN,ERROR,FATAL,OFF LOG_LEVEL=INFO log4j.rootLogge ...

  2. Apache Linux下Apache安装步骤

    Apache简介         Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广 ...

  3. OneAPM 重磅登陆 CTDC 2018展示“ AIOps 双雄”创新实力

    9月7日-8日,以“AI 智享未来”为主题的2018第二届 CTDC 首席技术官领袖峰会在乌镇盛大召开,大会由 CTOA 首席技术官领袖联盟.ITShare 主办,大会邀请了国内外顶级互联网.在线教育 ...

  4. Vue学习之路8-v-on指令学习简单事件绑定之属性

    前言 上一篇文章以v-on指令绑定click事件为例介绍了v-on指令的使用方法,本文介绍一下v-on绑定事件的一些属性的使用方法. v-on绑定指令属性 .stop属性 阻止单击事件继续向上传播(简 ...

  5. Ubuntu 12.04上安装HBase并运行

    Ubuntu 12.04上安装HBase并运行 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 一.HBase的安装 在官网上下载HBase-1.1.2 ...

  6. ELK+Kafka 企业日志收集平台(一)

    背景: 最近线上上了ELK,但是只用了一台Redis在中间作为消息队列,以减轻前端es集群的压力,Redis的集群解决方案暂时没有接触过,并且Redis作为消息队列并不是它的强项:所以最近将Redis ...

  7. docker pull下载镜像报错Get https://registry-1.docker.io/v2/library/centos/manifests/latest:..... timeout

    使用docker pull从镜像仓库拉取镜像时报错如下:[root@docker-registry ~]# docker pull centosUsing default tag: latestTry ...

  8. Docker卸载镜像

    Linux服务器Docker卸载某个镜像: 首先输入命令docker images查看当前docker下有多少镜像: 1 [root@iZwz9a191mdam4di3dozk3Z ~]# docke ...

  9. A. On The Way to Lucky Plaza 概率 乘法逆元

    A. On The Way to Lucky Plaza time limit per test 1.0 s memory limit per test 256 MB input standard i ...

  10. Ecelipse上添加Server

    第一步,打开eclipse工具,点击菜单栏中的"Help",选择"Install New Software" 第二步,点击Add按钮 第三步,Name输入:&q ...