题目传送门

心路历程:

每想到一种思路,就有一种要做出来的感觉。但一接着想就会发现这种方法有一些极小的问题,但是我没法解决。。。

于是就再换思路。。。

最后在请教了出题人神仙zcq之后,终于做出来了 ~~ (面向数据编程 ~~

口胡一下思路:

首先,我们手玩一波柿子。

\[\sum_{x=0}^{n}\prod_{y=0}^{x}\frac{x}{kx+y-x}=
\]

\[=\prod_{x=0}^n\prod_{y=0}^{k}(\frac{x}{kx+y-x}+1)
\]

\[=\prod_{x=0}^n\prod_{y=0}^{k}\frac{kx+y}{kx+y-x}
\]

\[=\prod_{x=0}^{n}\frac{\prod_{i=1}^x(kx+k-i)}{\prod_{j=1}^x(kx-j)}
\]

\[=\frac{\prod_{i=1}^{n-1}(kn-i)}{\prod_{j=1}^{k-1}(kj-j)}
\]

\[=\frac{(nk-1)!}{(nk-n-1)!n!(k-1)^n}
\]

然后我们看怎么求这个东西。

大概就是把分子和分母写成

\[\frac{p=a*m^x}{q=b*m^y}
\]

(m是模数)的形式。

然后。。。

如果\(x>y\),那么约分后\(p\equiv 0\),所以\(a=0\)即可,输出\(0\)

如果\(x<y\),那么约分后\(q\equiv 0\),所以无论\(a\)取什么值,都不可能满足条件,输出\(-1\)

如果\(x=y\),那么\(p\equiv 0,q\equiv 0\),p!=0,q!=0,这样可以用逆元求出值

额,对,出处是i_m_a_的博客

(还有,他的博客哪里写成了p=0,q=0,而不是同余(大雾

emmmm..

Code

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
typedef long long ll; const ll P = 1145141;
ll T;
ll n,k;
ll f[P+1]; inline void readx(ll &x)
{
x=0;
int s=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-')
s=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x=(x<<1)+(x<<3)+ch-'0';
ch=getchar();
}
x*=s;
} inline void pre()
{
f[0]=1;
for(int i=1;i<P;++i)
f[i]=f[i-1]*i%P;
} inline ll qpow(ll a,ll b)
{
ll x=1;
while(b)
{
if(b&1)
x=x*a%P;
a=a*a%P;
b>>=1;
}
return x;
} inline ll inv(ll x)
{
return qpow(x,P-2);
} int main()
{
pre();
readx(T);
while(T--)
{
readx(n);readx(k);
ll a_mo=1,a_de=1,x_mo=0,x_de=0; ll r=n*k-1;
while(r)
{
a_mo=a_mo*f[r%P]%P;
r/=P;
x_mo+=r;
}
a_mo=a_mo*qpow(f[P-1],x_mo)%P;
//处理分子 ll tmp=0;
r=k-1;
while(r%P==0)
{
++tmp;
r/=P;
}
tmp*=(n-1);
a_de=qpow(r,n-1);
x_de+=tmp; r=n*k-n;
tmp=0;
while(r)
{
a_de=a_de*f[r%P]%P;
r/=P;
tmp+=r;
}
a_de=a_de*qpow(f[P-1],tmp)%P;
x_de+=tmp; r=n-1;
tmp=0;
while(r)
{
a_de=a_de*f[r%P]%P;
r/=P;
tmp+=r;
}
a_de=a_de*qpow(f[P-1],tmp)%P;
x_de+=tmp; //处理分母 ll ans=a_mo*inv(a_de)%P;
if(x_mo>x_de)
printf("0\n");
else if(x_mo<x_de)
printf("-1\n");
else
printf("%lld\n",ans);
}
return 0;
}

洛谷 P5509 派遣的更多相关文章

  1. 洛谷 - P1552 - 派遣 - 左偏树 - 并查集

    首先把这个树建出来,然后每一次操作,只能选中一棵子树.对于树根,他的领导力水平是确定的,然后他更新答案的情况就是把他子树内薪水最少的若干个弄出来. 问题在于怎么知道一棵子树内薪水最少的若干个分别是谁. ...

  2. 洛谷 [P1552] 派遣

    树型DP + 可并堆 非常清楚的想到是树型DP, 但是如何维护最小值, 于是就去新学了可并堆 #include <iostream> #include <cstring> #i ...

  3. 洛谷1552 [APIO2012]派遣

    洛谷1552 [APIO2012]派遣 原题链接 题解 luogu上被刷到了省选/NOI- ...不至于吧 这题似乎有很多办法乱搞? 对于一个点,如果他当管理者,那选的肯定是他子树中薪水最少的k个,而 ...

  4. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

  5. 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.

    没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...

  6. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...

  7. 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP

    题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...

  8. 洛谷P1710 地铁涨价

    P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交  讨论  题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...

  9. 洛谷P1371 NOI元丹

    P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交  讨论  题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...

随机推荐

  1. php 高级 多台web服务器共享session的方法

    解决多台web服务器共享session的问题,至少有以下三种方法:   一.将本该保存在web服务器磁盘上的session数据保存到cookie中 即用cookie会话机制替代session会话机制, ...

  2. 代理模式之静态代理,JDK动态代理和cglib动态代理

    代理模式,顾名思义,就是通过代理去完成某些功能.比如,你需要购买火车票,不想跑那么远到火车站售票窗口买,可以去附近的火车票代售点买,或者到携程等第三方网站买.这个时候,我们就把火车站叫做目标对象或者委 ...

  3. 「学习笔记」FFT 快速傅里叶变换

    目录 「学习笔记」FFT 快速傅里叶变换 啥是 FFT 呀?它可以干什么? 必备芝士 点值表示 复数 傅立叶正变换 傅里叶逆变换 FFT 的代码实现 还会有的 NTT 和三模数 NTT... 「学习笔 ...

  4. 从零构建以太坊(Ethereum)智能合约到项目实战——第23章 从零构建和部署去中心化投票App,decentralization Voting Dapp

    P90 .1-从零构建和部署去中心化投票App-01 P91 .2-从零构建和部署去中心化投票App-02 P92 .3-从零构建和部署去中心化投票App-03 参考博文:http://liyuech ...

  5. Linux创建智能DNS

    根据客户端源IP地址的不同,DNS服务提供不同的解析地址 1.安装dns服务,修改全局配置文件/etc/named.conf # yum -y install bind # vim /etc/name ...

  6. Android SDCard文件、目录操作【转】

    一.权限问题 参考:http://www.cnblogs.com/sky-zhang/p/3403393.html Android框架是基于Linux内核构建,所以Android安全系统也是基于Lin ...

  7. redhat 7.6 配置repo源

    vi /etc/yum.repos.d/base.repo          #编辑配置repo配置文件,如果没有则自动创建,没有影响 name=base     //源名字,起什么名都没影响 bas ...

  8. 128、Java面向对象之对象的比较

    01.代码如下: package TIANPAN; class Book { private String title; private double price; public Book(Strin ...

  9. ZCGL大数据平台性能优化

    对HBase数据库建索引 参见:基于Phoenix对HBase建索引   https://www.cnblogs.com/ratels/p/11203313.html 将HBase访问微服务整合到模块 ...

  10. centos7-django(python3)环境搭建

    最小化安装centos7 安装epel-release 安装python34 安装pip3 通过pip3安装django 坑 epel(extra package for enterprise lin ...