代码:

#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. MvcForum中文版+PostgreSql源码下载

    演示地址:http://bbs.hfenxiao.com 因为种处原因在家休假,闲来无事,便将去年关注的一个基于asp.net mvc论坛程序拿出来做了一些调整. 据说PostgreSql是世界上功能 ...

  2. 一些baidu面经

    百度问的一些问题供参考: 1. epoll 和 select,epoll 两种模式,阻塞非阻塞: 2. 两个严格递增链表找出相同的元素组成新的链表: ref1   ref 3. 网络传输中如何传送一个 ...

  3. SCCM2007日志文件

    Microsoft System Center Configuration Manager 2007 中的所有客户端和站点服务器组件都将过程信息记录在单个日志文件中.您可以使用客户端和站点服务器日志文 ...

  4. linux 下通过过 hbase 的Java api 操作hbase

    hbase版本:0.98.5 hadoop版本:1.2.1 使用自带的zk 本文的内容是在集群中创建java项目调用api来操作hbase,主要涉及对hbase的创建表格,删除表格,插入数据,删除数据 ...

  5. Java学习---InetAddress类的学习

    基础知识 1.InetAddress类 在网络API套接字,InetAddress类和它的子类型对象使用域名DNS系统,处理主机名到主机IPv4或IPv6地址的转换.如图1-1所示. 由于InetAd ...

  6. zeromq 笔记

    一. 当执行zmq_bind后会进入mute state,直到有进入或者出去的连接发生才会进入ready state 在mute state状态下会根据不同的套接字类型决定是丢弃消息还是阻塞 可参考z ...

  7. 5、Python,enumerate用法

    1.enumerate()是python的内置函数 2.对于一个可迭代(iterable)/可遍历的对象(如列表,字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值 3.多用 ...

  8. Centos7安装Redis4.0.8

    今天安装了CentOS7 1708 在安装redis时报错  make[1]: *** [adlist.o] 错误 127 因为Redis是C实现的,需要gcc来进行编译,所以原因是系统未安装gcc, ...

  9. BZOJ 1008 越狱 组合数学

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1008 题目大意: 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗 ...

  10. 使用tidylib解决不规则网页问题

    windows 下安装tidylib 先去https://pypi.python.org/pypi/pytidylib 下载pytidylib 跑官方提供的测试用例报错 ition 0: unexpe ...