代码:

#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. C++学习笔记(3)----类模板的static成员

    与任何其他类相同,类模板可以声明 static 成员: template <typename T> class Foo { public: static std::size_t count ...

  2. (C# Window Service) Verify that you have sufficient privileges to start system services

    写了个Windows Service, 用Wix 写了个Installer,编译通过,生成了msi 安装文件,但是安装的时候总是提示: Product: KingPro Service -- Erro ...

  3. 星空灯改装成USB供电

    简单的手工活,20分钟搞定 1.用一根USB线剪断,将红黑两根线分别连接到星空灯电源供电的正负极 2.由于USB输出5V 0.5A的电流,因此需要改装下,办法一,加电阻,办法二,换灯泡,由于小电阻并不 ...

  4. 如何解决MSSQL中文数据乱码问题

    今天遇到了在数据库中直接写SQL语句,语句中包含中文,但是数据库的表里是包含“?” 的乱码. 我程序代码中,调试时得到的SQL不是乱码,在控制台中也不是乱码.但是在数据库中却出现了乱码. 当用MSSQ ...

  5. Mysql备份 -----innobackupex

    一,原理及介绍〇 xtrabackup能做哪些    对InnoDB引擎的表做热备    增量备份    流压缩传输到另外的服务器上    在线移动表    更简单的创建从库    备份时不增加服务器 ...

  6. 微信开发平台中有个接口是上传多媒体文件,我用的是java 开发的,我怎么样才能在后台实现呢?

    /**      * 文件上传到微信服务器      * @param fileType 文件类型      * @param filePath 文件路径      * @return JSONObj ...

  7. iOS9 News 应用

    iOS9 News 应用 iOS9 中国区虽然没有 News 应用,但最新的开发工具中是有的,以下是笔者截取的模拟器gif图,供君欣赏:    

  8. 软件磁盘阵列 (Software RAID)

    什么是 RAID 磁盘阵列全名是『 Redundant Arrays of Inexpensive Disks, RAID 』,容错式廉价磁盘阵列. RAID 可以通过一些技术(软件或硬件),将多个较 ...

  9. WINDOW各种命令

  10. 月报 提取/保存 到OneDrive. 并发送反馈邮件