代码:

#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. 微服务&spring cloud架构系列汇总

    为了方便查找,把微服务&微服务架构之spring cloud架构系列文章按时间正序整理了一下,记录如下:   1. 微服务架构之spring cloud 介绍 2. 微服务架构之spring ...

  2. php判断网站收录情况

    php判断网站收录情况 <?php //检测网页是否被百度收录 function checkBaiduIndex($url){ $url='http://www.baidu.com/s?wd=' ...

  3. 【 PostgreSQL】工作中常用SQL语句干货

    接触gp数据库近一年的时间,语法上和其他数据库还是有些许不同,工作中常用的操作语句分享给大家! -- 建表语句 create table ods.ods_b_bill_m ( acct_month t ...

  4. Linux 配置samba服务实现与Windows文件共享

    目录: 1.samba服务介绍 2. 安装samba服务和客户端 3.samba配置文件详解 4.配置实例 5.客户端挂载与测试 6.samba排错 1.Samba服务介绍     Samba 最先在 ...

  5. C/S结构软件测试要点汇总

    C/S结构测试要点   1.安装/卸载: 1.安装包:完整性,安装包大小是否达到要求,显示基本信息是否正确,步骤是否明确,内容是否合理. 2.首次安装: 1)是否与其他已安装的软件冲突. 2)各种杀毒 ...

  6. centos6.4 minimal 安装kvm

    操作系统是网易源下载的centos 64位的minimal安装包,很多工具都没有,像gcc make wget which where 等统统没有,好在有yum 这里为了简单起见直接用yum安装kvm ...

  7. webpack和gulp

    在没有使用任何自动化工具之前,如果用sass写了css, 用coffee写了js, 那么我们必须手动用相应的compiler去编译各自的文件,然后各自minify(js,css文件压缩并合并).这时如 ...

  8. 通过163smtp服务器向各大邮箱发送邮件(SOCKET编程)

    package server; import java.io.*; import java.net.*; import java.sql.Time; import java.util.Scanner; ...

  9. ALICE源代码分析

    前言 ALICE(爱丽丝)事实上是"人工语言计算机实体"的英文缩写. 它以前在往年(2000年.2001年和2004年)的勒布纳人工智能奖角逐中三次获胜.并在其它年度中也获过骄人的 ...

  10. 1295. [SCOI2009]最长距离【最短路】

    Description windy有一块矩形土地,被分为 N*M 块 1*1 的小格子. 有的格子含有障碍物. 如果从格子A可以走到格子B,那么两个格子的距离就为两个格子中心的欧几里德距离. 如果从格 ...