Time:2016.06.24
Author:xiaoyimi
转载注明出处谢谢


传送门1
传送门2
思路:
k=0时答案就是
∏mi=1∑nj=1j\prod^m_{i=1}\sum^n_{j=1}j
=(n(n+1)2)m=(\frac{n(n+1)}2)^m
每一种限制条件就是在乘的时候去除某个数
就比如说n=3,m=3时,答案就是
(1+2+3)(1+2+3)(1+2+3)=216(1+2+3)(1+2+3)(1+2+3)=216
当k=1,限制条件为(1,1)时我们就把第一个括号里的1去掉,变成
(2+3)(1+2+3)(1+2+3)=180(2+3)(1+2+3)(1+2+3)=180
k=2,限制条件为(1,1)(2,1)时答案就是
(2+3)(2+3)(1+2+3)=150(2+3)(2+3)(1+2+3)=150
搞清楚这个原理接下来就很简单了
将k个限制条件排序,然后分开计算每一个位置里的数就好了,剩下的没被去掉的位置用快速幂
(思想如上,但代码表达上有点怪,仅供参考)

#include<cstdio>
#include<iostream>
#include<algorithm>
#define M 100004
#define LL long long
#define mo 1000000007
using namespace std;
int in()
{int t=0;char ch=getchar();while (ch>'9'||ch<'0') ch=getchar();while (ch>='0'&&ch<='9') t=(t<<3)+(t<<1)+ch-48,ch=getchar();return t;
}
LL qr(LL x,int y)
{LL ans=1;for (;y;y>>=1,x=x*x%mo)if (y&1) ans=ans*x%mo;return ans;
}
int n,m,k;
struct node{int x,y;bool operator <(node other)const{if(x!=other.x) return x<other.x;return y<other.y;}
}Q[M];
LL ans,sum,inv;
main()
{n=in();m=in();k=in();for (int i=1;i<=k;i++)Q[i].x=in(),Q[i].y=in();LL nn=(LL)n*(n+1)/2%mo; ans=qr(nn,m);inv=qr(nn,mo-2);sort(Q+1,Q+k+1);sum=Q[1].y;for (int i=2;i<=k;i++){if (Q[i].x==Q[i-1].x)if (Q[i].y!=Q[i-1].y) sum+=Q[i].y;else;elseans=ans*(nn-sum)%mo*inv%mo,sum=Q[i].y;}ans=ans*(nn-sum)%mo*inv%mo;printf("%d",ans<0?ans+mo:ans);
}

【BZOJ2751】【codevs1853】容易题,快速幂+逆元相关推荐

  1. 51nod 1013【快速幂+逆元】

    等比式子: Sn=(a1-an*q)/(1-q) n很大,搞一发快速幂,除法不适用于取膜,逆元一下(利用费马小定理) 假如p是质数,且gcd(a,p)=1,那么 a^(p-1)≡1(mod p).刚好 ...

  2. 第M题 快速幂详解!: 给出3个正整数A B C,求A^B Mod C。

    给出3个正整数A B C,求A^B Mod C. 例如,3 5 8,3^5 Mod 8 = 3. Input 3个正整数A B C,中间用空格分隔.(1 <= A,B,C <= 10^9) ...

  3. 【日常水题——快速幂系列】

    HDU Rightmost Digit 题意,求每个数n^n 的个位数是多少: 快速幂裸题qwq 相当于算出n^n 后对10取模 注意事项: 根据取模的性质:balabala反正一直模就对了√ 自定义 ...

  4. 等比数列求和 (快速幂 + 逆元)

    求一个等比数例之和, 并让他对一个数取模. 用到等比数列求和公式, 快速幂, 逆元. 不会证明, 下面给出代码. #include <stdio.h> #include <strin ...

  5. 【hdu 1061】Rightmost Digit(水题 快速幂 分治)

    题目分析: 虽然只要求pow(x,x)%10,但是思路和求快速幂pow(x,y)%mod一样. 前者相当于后者的简化版. 解题思路 若次数y为1,则pow(x,1)%mod = x%mod; 若次数y ...

  6. 序列上问题(逆元+整数快速幂)

    题目链接:https://ac.nowcoder.com/acm/contest/393/D 链接:https://ac.nowcoder.com/acm/contest/393/D 来源:牛客网 题 ...

  7. 算法刷题-数论-组合数、快速幂、逆元、递推求组合数、逆元求组合数

    文章目录 acwing885. 求组合数 I(递推:数据范围:2000) acwing875. 快速幂(a的k次方 模 b) acwing876. 快速幂求逆元 acwing886. 求组合数 II( ...

  8. 2014 Super Training #7 F Power of Fibonacci --数学+逆元+快速幂

    原题:ZOJ 3774  http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3774 --------------------- ...

  9. (组合数求模=乘法逆元+快速幂) Problem Makes Problem

    题目: As I am fond of making easier problems, I discovered a problem. Actually, the problem is 'how ca ...

最新文章

  1. linux setup 进步了网卡,linux 网卡修改小结
  2. 深度学习的数学(2)恶魔神经
  3. [云炬创业学笔记]第二章决定成为创业者测试10
  4. 【JavaScript脚本】——T1基本语法
  5. 苹果手机自带表格软件_解决手机系统自带软件无法卸载问题
  6. ASP.NET验证控件祥解
  7. 如此多的深度学习框架,为什么我选择PyTorch?
  8. 再别极域(亲测有效)
  9. 关键词云图,实现搜索功能
  10. win7计算机广告更改,win7电脑弹窗广告怎么彻底关闭_win7去除弹窗广告的步骤
  11. java学习网络编程遇到异常java.net.SocketException:Software caused connection abort: socket write error
  12. ubuntu20.04下opencv4.4编译、给图片加中文标注及tensorflow的问题记录、ubuntu下使用cv::text::OCRTesseract模块字符识别
  13. 解析 embedded.mobileprovision 获取信息
  14. bootstrap-select 滚轴_Bootstrap-Select插件
  15. 肾虚的信号你明白嘛?
  16. 电机控制要点解疑:SPWM,SVPWM和矢量控制
  17. C语言用指针法输入12个整数,然后按每行4个数输出(刷题)
  18. DM数据库开启归档模式的三种方式
  19. 数学模型奶制品生产c语言编程,数学模型 奶制品的生产与销售.ppt
  20. ubuntu进去安全模式_win10和Ubuntu双系统,无法开机如何进入win10安全模式

热门文章

  1. 【nodejs原理源码赏析(2)】KOA中间件的基本运作原理
  2. DevOps组织如何有效地实施MSA
  3. java springmvc注解详解_springMVC注解开发详解(转)
  4. java sql2005驱动_java.sql.SQLException:找不到适用于jdbc:microsoft:sqlserver的驱动程序...
  5. LeetCOde-394:字符串解码
  6. Python面向对象编程三大特性之封装
  7. 【图像处理基础知识】python+opencv显示中文
  8. 【java基础知识】java打包运行时显示控制台内容
  9. Bootstrap3代码模板
  10. 没有qpress_MySQL 大数据备份方案之Percona XtraBackup