代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define rii register int i
#define rij register int j
#define int long long
using namespace std;
int n1,m1,p,nl[100005],t;
int pf[10]={0,1,10,15,25,40,55,75,100};
int pow(int a,int b,int p)
{
int res=1;
while(b)
{
if(b&1)
{
res=res*a%p;
}
a=a*a%p;
b>>=1;
}
return res;
}
int exgcd(int a,int b,int& x,int& y)
{
if(!b)
{
x=1;
y=0;
return a;
}
int res=exgcd(b,a%b,y,x);
y-=(a/b)*x;
return res;
}
int reverse(int a,int p)
{
int x,y;
exgcd(a,p,x,y);
return (x%p+p)%p;
}
int C(int n,int m,int p)
{
if(m>n)
{
return 0;
}
int res=1,i,a,b;
for(i=1;i<=m;i++)
{
a=(n+1-i)%p;
b=reverse(i%p,p);
res=res*a%p*b%p;
}
return res;
}
int Lucas(int n,int m,int p)
{
if(m==0)
{
return 1;
}
return Lucas(n/p,m/p,p)*C(n%p,m%p,p)%p;
}
int cal(int n,int a,int b,int p)
{
if(!n)
{
return 1;
}
int i,y=n/p,tmp=1;
for(i=1;i<=p;i++)
{
if(i%a)
{
tmp=tmp*i%p;
}
}
int ans=pow(tmp,y,p);
for(i=y*p+1;i<=n;i++)
{
if(i%a)
{
ans=ans*i%p;
} }
return ans*cal(n/a,a,b,p)%p;
}
int multiLucas(int n,int m,int a,int b,int p)
{
int i,t1,t2,t3,s=0,tmp;
for(i=n;i;i/=a)
{
s+=i/a;
}
for(i=m;i;i/=a)
{
s-=i/a;
}
for(i=n-m;i;i/=a)
{
s-=i/a;
}
tmp=pow(a,s,p);
t1=cal(n,a,b,p);
t2=cal(m,a,b,p);
t3=cal(n-m,a,b,p);
return tmp*t1%p*reverse(t2,p)%p*reverse(t3,p)%p;
}
int exLucas(int n,int m,int p)
{
int i,d,c,t,x,y,q[100],a[100],e=0;
for(i=2;i*i<=p;i++)
{
if(p%i==0)
{
q[++e]=1;
t=0;
while(p%i==0)
{
p/=i;
q[e]*=i;
t++;
}
if(q[e]==i)
{
a[e]=Lucas(n,m,q[e]);
}
else
{
a[e]=multiLucas(n,m,i,t,q[e]);
}
}
}
if(p>1)
{
e++;
q[e]=p;
a[e]=Lucas(n,m,p);
}
for(i=2;i<=e;i++)
{
d=exgcd(q[1],q[i],x,y);
c=a[i]-a[1];
if(c%d)
{
exit(-1);
}
t=q[i]/d;
x=(c/d*x%t+t)%t;
a[1]=q[1]*x+a[1];
q[1]=q[1]*q[i]/d;
}
return a[1];
}
inline int rd(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)) {f=ch=='-'?0:;ch=getchar();}
while(isdigit(ch)) {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
return f?x:-x;
}
bool cmp(int lk,int kl)
{
return lk<kl;
}
void solve()
{
n1=rd();
m1=rd();
p=rd();
// scanf("%lld%lld%lld",&n,&m,&p);
for(rii=1;i<=n1;i++)
{
nl[i]=rd();
// scanf("%lld",&nl[i]);
}
sort(nl+1,nl+n1+1,cmp);
int minx=10,jsq=0;
for(rii=1;i<=m1;i++)
{
int val;
val=rd();
// scanf("%lld",&val);
minx=min(minx,val);
jsq+=pf[val];
}
jsq-=pf[minx];
int cha=(m1-1)*71-jsq;
int mins=cha/29;
if(mins*29<cha)
{
mins++;
}
if(cha<=0)
{
mins=0;
}
int ans=0;
int zx;
zx=rd();
// scanf("%lld",&zx);
int cnt=n1;
for(rii=1;i<=n1;i++)
{
if(nl[i]<zx)
{
cnt--;
}
else
{
break;
}
}
n1=cnt;
for(rii=mins+1;i<=n1;i++)
{
ans+=exLucas(n1,i,p);
ans%=p;
}
printf("%lld\n",ans);
}
signed main()
{
// freopen("pf10.in","r",stdin);
// freopen("pf10.out","w",stdout);
scanf("%lld",&t);
for(rii=1;i<=t;i++)
{
solve();
}
}

ztz11的noip模拟赛T3:评分系统的更多相关文章

  1. 20161005 NOIP 模拟赛 T3 解题报告

    subset 3.1 题目描述 一开始你有一个空集,集合可以出现重复元素,然后有 Q 个操作 1. add s 在集合中加入数字 s. 2. del s 在集合中删除数字 s.保证 s 存在 3. c ...

  2. 神奇的NOIP模拟赛 T3 LGTB 玩THD

    LGTB 玩THD LGTB 最近在玩一个类似DOTA 的游戏名叫THD有一天他在守一座塔,对面的N 个小兵排成一列从近到远站在塔前面每个小兵有一定的血量hi,杀死后有一定的金钱gi每一秒,他都可以攻 ...

  3. ztz11的noip模拟赛T2:查房

    链接: https://www.luogu.org/problemnew/show/U46611 思路: 这道题告你n-1条边就是骗你的 部分分也是骗你的 这道题连对边5分钟的事 一个点对另一个点有影 ...

  4. ztz11的noip模拟赛T1:愤怒的XiaoX

    链接: https://www.luogu.org/problemnew/show/U47231 思路: 这道题其实就是一道双Lazy线段树裸题 因为我们知道,当k一定时,取反偶数次最后k位等于不取反 ...

  5. 【2019.8.20 NOIP模拟赛 T3】小X的图(history)(可持久化并查集)

    可持久化并查集 显然是可持久化并查集裸题吧... 就是题面长得有点恶心,被闪指导狂喷. 对于\(K\)操作,直接\(O(1)\)赋值修改. 对于\(R\)操作,并查集上直接连边. 对于\(T\)操作, ...

  6. 【2019.7.25 NOIP模拟赛 T3】树(tree)(dfs序列上开线段树)

    没有换根操作 考虑如果没有换根操作,我们该怎么做. 我们可以求出原树的\(dfs\)序列,然后开线段树维护. 对于修改操作,我们可以倍增求\(LCA\),然后在线段树上修改子树内的值. 对于询问操作, ...

  7. 【2019.7.26 NOIP模拟赛 T3】化学反应(reaction)(线段树优化建图+Tarjan缩点+拓扑排序)

    题意转化 考虑我们对于每一对激活关系建一条有向边,则对于每一个点,其答案就是其所能到达的点数. 于是,这个问题就被我们搬到了图上,成了一个图论题. 优化建图 考虑我们每次需要将一个区间向一个区间连边. ...

  8. NOIP模拟赛T3 斐波那契

    1.题目 求 \[\sum_{i=1}^n \sum_{j=1}^m \gcd(F_i,F_j) \] 其中 \(F_k\) 表示斐波那契数列的第 \(k\) 项,对 \(10^9 + 7\) 取模. ...

  9. 10.16 NOIP模拟赛

    目录 2018.10.16 NOIP模拟赛 A 购物shop B 期望exp(DP 期望 按位计算) C 魔法迷宫maze(状压 暴力) 考试代码 C 2018.10.16 NOIP模拟赛 时间:2h ...

随机推荐

  1. MySQL数据库(6)----配置文件 my.cnf 的使用

    1. 使用源码安装好MySQL后,其配置文件一般位于 /usr/local/my.cnf,可以使用如下命令查看查看配置文件的搜索顺序: root@javis:~$ mysqld --help --ve ...

  2. Kali 防火墙配置

    Kali操作系统安装时默认已经安装了"iptables",配置前先检查有没有安装,命令如下:iptables -L显示如下(图1),则表示已经安装了,如果没有安装,使用命令:apt ...

  3. RoCE、softRoCE与iWRAP

    RoCE - RDMA over Converged Ethernet 以太网在全球互联的广域网中毫无异议的老大,但在高带宽.低延时的专有网络领域却明显混不开.伴随网络融合概念兴起,IETF发布了DC ...

  4. 绛河 初识WCF5

    然后我们在<Client>中添加一个终结点,这个是客户端的终结点,我们前面曾经提过,通信实际上发生在两个终结点间,客户端也有个终结点,然而请求总是从客户端首先发起,所以终结点地址应该填写为 ...

  5. Python 生成器总结

    生成器的概念: 生成器不会把结果保存在一个系列中,而是保存在生成器的状态,在每次进行迭代时返回一个值,直到遇到StopIteration异常结束 生成器是这样一个函数,它记住上一次返回时在函数体中的位 ...

  6. sql join实例图解

    https://blog.codinghorror.com/a-visual-explanation-of-sql-joins/ 1. inner join: 所有满足join条件的两个table对应 ...

  7. 如何激活 Trend Micro Deep Security Agent

    Deep Security 即服务包括反恶意软件保护.防火墙.入侵防御系统和完整性监视.Trend Micro Deep Security Agent (DSA) 可以配合 Deep Security ...

  8. Eclipse+Maven 项目创建

    ★:jar包下载不了的话可能是镜像里没有这个版本,换个低版本的就行 ★:eclipse工程validating很慢,可以先关掉验证(一般对项目没什么影响) ★:eclipse工程pom.xml文件报错 ...

  9. ZT android -- 蓝牙 bluetooth (二) 打开蓝牙

    android -- 蓝牙 bluetooth (二) 打开蓝牙 分类: Android的原生应用分析 2013-05-23 23:57 4773人阅读 评论(20) 收藏 举报 androidblu ...

  10. my target

    目前看来 任何模块 改代码不是问题target是写得一手好代码.设计模式. 语法日积月累.c++ 先看media