题目描述

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

输入描述:

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

输出描述:

  1. 对于每组数据,输出一个整数表示答案,对

  1. 取模
    每组数据之间以换行分割
    链接:https://www.nowcoder.com/acm/contest/181/F
    来源:牛客网

输入

复制

  1. 3
  2. 4 3
  3. 5 3 1 4
  4. 5 4
  5. 3 7 5 2 1
  6. 10 3
  7. 100 1020 2050 102 12 235 4 57 32135 54354

输出

复制

  1. 144
  2. 81000
  3. 521918013

说明

第一组数据解释
所有长度为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:
  1. #include<bits/stdc++.h>
  2. #define int long long
  3. using namespace std;
  4. const int N=;
  5. const int mod=1e9+;
  6. typedef long long ll;
  7. int n,q,k;
  8. ll a[N];
  9. ll c[N][N];
  10. ll qm(ll x,ll y){
  11. ll ret=;
  12. while(y){
  13. if(y%==) ret=(ret*x)%mod;
  14. x=(x*x)%mod;
  15. y/=;
  16. }
  17. if(ret<) ret=(ret+mod)%mod;
  18. return ret%mod;
  19. }
  20. signed main()
  21. {
  22. for(int i=;i<=;i++){
  23. c[i][]=;
  24. for(int j=;j<=i;j++){
  25. c[i][j]=(c[i-][j-]+c[i-][j])%(mod-);
  26. }
  27. }
  28. scanf("%lld",&q);
  29. while(q--){
  30. scanf("%lld%lld",&n,&k);
  31. for(int i=;i<=n;i++)scanf("%lld",&a[i]);
  32. sort(a+,a+n+);
  33. ll ans=;
  34. for(int i=;i<=n;i++){
  35. ll ci=(c[n-][k-]-c[i-][k-]-c[n-i][k-]+*(mod-))%(mod-);
  36.  
  37. ans=(ans*qm(a[i],ci))%mod;
  38. }
  39. printf("%lld\n",ans);
  40. }
  41. return ;
  42. }
 注意取余运算的正确性,不是随便瞎取模都行的,也不是一定都对p取模

8.30 牛客OI赛制测试赛1 F题 子序列的更多相关文章

  1. 牛客OI赛制测试赛2(0906)

    牛客OI赛制测试赛2(0906) A :无序组数 题目描述 给出一个二元组(A,B) 求出无序二元组(a,b) 使得(a|A,b|B)的组数 无序意思就是(a,b)和(b,a) 算一组. 输入描述: ...

  2. 【牛客OI赛制测试赛3】 毒瘤xor

    牛客OI赛制测试赛3 毒瘤xor 传送门 题面,水表者自重 Solution 前缀和简单题(挖坑待补) 代码实现 #include<stdio.h> #define int long lo ...

  3. 牛客OI赛制测试赛2

    A题: https://www.nowcoder.com/acm/contest/185/A 链接:https://www.nowcoder.com/acm/contest/185/A来源:牛客网 题 ...

  4. C数列下标 牛客OI赛制测试赛2

    链接:https://www.nowcoder.com/acm/contest/185/C来源:牛客网 给出一个数列 A,求出一个数列B. 其中Bi   表示 数列A中 Ai 右边第一个比 Ai 大的 ...

  5. 牛客OI赛制测试赛2 D 星光晚餐

    链接:https://www.nowcoder.com/acm/contest/185/D来源:牛客网 题目描述 Johnson和Nancy要在星光下吃晚餐.这是一件很浪漫的事情. 为了增加星光晚餐那 ...

  6. 牛客OI赛制测试赛2 C 数组下标

    链接:https://www.nowcoder.com/acm/contest/185/C来源:牛客网 题目描述 给出一个数列 A,求出一个数列B. 其中Bi   表示 数列A中 Ai 右边第一个比 ...

  7. 牛客OI赛制测试赛2 A 无序组数

    链接:https://www.nowcoder.com/acm/contest/185/A来源:牛客网 题目描述 给出一个二元组(A,B) 求出无序二元组(a,b) 使得(a|A,b|B)的组数 无序 ...

  8. 牛客OI赛制测试赛3 解题报告

    前话: 话说考试描述:普及难度. 于是想在这场比赛上涨点信心. 考出来的结果:Point:480     Rank:40 然而同机房的最好成绩是 510. 没考好啊!有点炸心态,D题一些细节没有注意, ...

  9. Nowcoder | [题解-N189]牛客OI赛制测试赛3

    这场说实话确实水(逃*1),表示差一点就AK了(逃*2),然而被卡两个特判的我\(ssfd\)...\(qwq\) 表示这是第一次发整场比赛的题解...还请各位大佬原谅我太蒻写的垃圾啊\(qwq\). ...

随机推荐

  1. 20155234 Exp2 后门原理与实践

    Windows获得Linux Shell 1.查看ip 2.监听端口 3.实验成功如下图 Linux获得Win Shell 1.查看虚拟机ip 2.监听端口 3.实验成功如下图 使用NC传输数据 1. ...

  2. 20155237 2016-2017-2 《Java程序设计》第十周学习总结

    20155237 2016-2017-2 <Java程序设计>第十周学习总结 教材学习内容总结 计算机网络,是指分布在不同地理区域的计算机用通信线路互连起来的一个具有强大功能的网络系统.网 ...

  3. vue-cli,build 后,报错的解决办法

    报错如下图: 或: 解决办法:config / index.js 中,找到 build { assetsPublicPath: '/' },将其设置为:assetsPublicPath: './ ' ...

  4. Scala学习(二)练习

    Scala控制结构和函数&练习 1. 一个数字如果为正数,则它的signum为1:如果是负数,则signum为-1:如果为0,则signum为0:编写一个函数来计算这个值 简单逻辑判断: 测试 ...

  5. scala学习——(1)scala基础(下)

    (七)定长数组 val array_name = new Array[T](length) val array_name = Array("","") 通过() ...

  6. 使用ClosedXML,读取到空行

    最近项目中使用了ClosedXML.dll来处理Excel,在读取Excel的时候,用workSheet.Rows()获取Excel行数,默认读取Excel最大行数1048576 所以为了读取到不是空 ...

  7. CSS 背景实例

    CSS 背景属性属性 描述background 简写属性,作用是将背景属性设置在一个声明中.background-attachment 背景图像是否固定或者随着页面的其余部分滚动.background ...

  8. selenium+ python自动化--断言assertpy

    前言: 在对登录验证时,不知道为何原因用unittest的断言不成功,就在网上发现这个assertpy,因此做个笔记 准备: pip install assertypy 例子: from assert ...

  9. GitHub 新手教程 二,Windows 版 GitHub 安装

    1,下载地址: https://git-scm.com/download/ 2,信息: 3,选择安装位置: 例如:d:\soft\git 4,选择组件: 5,创建开始菜单: 6,选择Git使用的默认编 ...

  10. ace how to guide

    Configuring the editor there are several ways to pass configuration to Ace 有几种方法可以将配置传递给ace // pass ...