博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
8.30 牛客OI赛制测试赛1 F题 子序列
阅读量:5898 次
发布时间:2019-06-19

本文共 1666 字,大约阅读时间需要 5 分钟。

题目描述

给出一个长度为n的序列,你需要计算出所有长度为k的子序列中,除最大最小数之外所有数的乘积相乘的结果

输入描述:

第一行一个整数T,表示数据组数。 对于每组数据,第一行两个整数N,k,含义如题所示 接下来一行N个整数,表示给出的序列 保证序列内的数互不相同

输出描述:

对于每组数据,输出一个整数表示答案,对
取模 每组数据之间以换行分割 链接: 来源:牛客网

输入

34 3 5 3 1 45 43 7 5 2 110 3 100 1020 2050 102 12 235 4 57 32135 54354

输出

14481000521918013

说明

第一组数据解释
所有长度为3的子序列为
最终答案为

备注:

的数据:
保证序列中的元素互不相同且
 
 
 

 题解:

一眼看过去是n^2
二眼看过去要算每一个数的贡献
三眼看过去就是每一个数出现次数
四眼看过去总次数是C(n-1,k-1)
五眼看过去还要容斥,减去作为最大最小值次数
六眼看过去可以排个序,和前面搭配是作为最大值,和后面搭配作为最小值
七眼看过去还要一个快速幂
 
然后手打,结果挂了。AK失败。
好吧,其实方法一点没错,但是细节出了问题。
组合数n^2预处理嘛,习惯性对p=1e9+7取模。
以前一直是这样。。。
 
但是,以前组合数是乘数,现在组合数可是指数啊!!
指数怎么能对p取模呢??
 
但是指数可以对p-1取模。
因为这里p是质数,a^(p-1)=1 mod p(费马搞死你)
所以,指数减掉若干个p-1,并不影响。
当一般地,(a,p)=1而p不是质数,就欧拉定理,a^(phi(p))=1 mod p呗
 
 
(学信竞1年来,头一次知道对指数取模可以mod phi(p) -_-||)
Code:
#include
#define int long longusing namespace std;const int N=2005;const int mod=1e9+7;typedef long long ll;int n,q,k;ll a[N];ll c[N][N];ll qm(ll x,ll y){ ll ret=1; while(y){ if(y%2==1) ret=(ret*x)%mod; x=(x*x)%mod; y/=2; } if(ret<0) ret=(ret+mod)%mod; return ret%mod;}signed main(){ for(int i=0;i<=2001;i++){ c[i][0]=1; for(int j=1;j<=i;j++){ c[i][j]=(c[i-1][j-1]+c[i-1][j])%(mod-1); } } scanf("%lld",&q); while(q--){ scanf("%lld%lld",&n,&k); for(int i=1;i<=n;i++)scanf("%lld",&a[i]); sort(a+1,a+n+1); ll ans=1; for(int i=1;i<=n;i++){ ll ci=(c[n-1][k-1]-c[i-1][k-1]-c[n-i][k-1]+2*(mod-1))%(mod-1); ans=(ans*qm(a[i],ci))%mod; } printf("%lld\n",ans); } return 0;}

 

 注意取余运算的正确性,不是随便瞎取模都行的,也不是一定都对p取模

转载于:https://www.cnblogs.com/Miracevin/p/9560987.html

你可能感兴趣的文章
BeanUtils\DBUtils
查看>>
python模块--os模块
查看>>
Java 数组在内存中的结构
查看>>
《关爱码农成长计划》第一期报告
查看>>
学习进度表 04
查看>>
谈谈javascript中的prototype与继承
查看>>
时序约束优先级_Vivado工程经验与各种时序约束技巧分享
查看>>
minio 并发数_MinIO 参数解析与限制
查看>>
flash back mysql_mysqlbinlog flashback 使用最佳实践
查看>>
mysql存储引擎模式_MySQL存储引擎
查看>>
python类 del_全面了解Python类的内置方法
查看>>
java jni 原理_使用JNI技术实现Java和C++的交互
查看>>
java 重写system.out_重写System.out.println(String x)方法
查看>>
配置ORACLE 11g绿色版客户端和PLSQL远程连接环境
查看>>
ASP.NET中 DataList(数据列表)的使用前台绑定
查看>>
Linux学习之CentOS(八)--Linux系统的分区概念
查看>>
System.Func<>与System.Action<>
查看>>
asp.net开源CMS推荐
查看>>
csharp skype send message in winform
查看>>
MMORPG 游戏服务器端设计--转载
查看>>