BZOJ:2186: [Sdoi2008]沙拉公主的困惑
问题:可能逆元不存在吗?
题解:
Gcd(a,b)==Gcd(b,a-b);
从数据范围可以看出应该求M!的欧拉函数;
然后通过Gcd转化过去
一开始没想到
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- using namespace std;
- typedef long long Lint;
- const int maxT=20000;
- const int maxn=10000009;
- int T,r;
- int mn=0,mm=0;
- int inn[maxT];
- int inm[maxT];
- Lint fac[maxn];
- int vis[maxn]= {0};
- int prime[maxn],cntprime=0;
- int Lineshake() {
- vis[1]=1;
- for(int i=2; i<=mm; ++i) {
- if(!vis[i]) {
- prime[++cntprime]=i;
- }
- for(int j=1; (j<=cntprime)&&(i*prime[j]<=mm); ++j) {
- vis[i*prime[j]]=1;
- if(i%prime[j]==0)break;
- }
- }
- }
- Lint ksm(Lint a,Lint p) {
- Lint ret=1;
- for(; p; p>>=1,a=a*a%r) {
- if(p&1)ret=ret*a%r;
- }
- return ret;
- }
- Lint inv(Lint x) {
- return ksm(x,r-2);
- }
- Lint phi[maxn];
- int main() {
- scanf("%d%d",&T,&r);
- for(int i=1; i<=T; ++i) {
- scanf("%d%d",&inn[i],&inm[i]);
- mn=max(mn,inn[i]);
- mm=max(mm,inm[i]);
- }
- fac[1]=1;
- for(int i=2; i<=mn; ++i)fac[i]=fac[i-1]*i%r;
- Lineshake();
- phi[1]=1;
- for(int i=2; i<=mm; ++i) {
- if(!vis[i]) {
- phi[i]=phi[i-1]*(i-1)%r*inv(i)%r;
- } else {
- phi[i]=phi[i-1];
- }
- }
- for(int i=1; i<=T; ++i) {
- printf("%lld\n",fac[inn[i]]*phi[inm[i]]%r);
- }
- return 0;
- }
BZOJ:2186: [Sdoi2008]沙拉公主的困惑的更多相关文章
- Bzoj 2186: [Sdoi2008]沙拉公主的困惑 乘法逆元,线性筛,欧拉函数,数论
2186: [Sdoi2008]沙拉公主的困惑 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 2560 Solved: 857[Submit][St ...
- 数学(逆元):BZOJ 2186: [Sdoi2008]沙拉公主的困惑
2186: [Sdoi2008]沙拉公主的困惑 Description 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞 ...
- [BZOJ 2186] [Sdoi2008] 沙拉公主的困惑 【欧拉函数】
题目链接:BZOJ - 2186 题目分析 题目要求出 [1, n!] 中有多少数与 m! 互质.(m <= n) 那么在 [1, m!] 中有 phi(m!) 个数与 m! 互质,如果一个数 ...
- [BZOJ 2186][Sdoi2008]沙拉公主的困惑(欧拉函数)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2186 分析: 就是要求1~n!中与m!互质的数的个数 首先m!以内的就是φ(m!) 关 ...
- bzoj 2186 [Sdoi2008]沙拉公主的困惑(欧拉函数,逆元)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2186 [题意] 若干个询问,求1..n!中与m!互质的个数. [思路] 首先有gcd( ...
- BZOJ 2186 [Sdoi2008]沙拉公主的困惑 【逆元】
题意:求中互质的数的个数,其中. 分析:因为,所以,我们很容易知道如下结论 对于两个正整数和,如果是的倍数,那么中与互素的数的个数为 本结论是很好证明的,因为中与互素的个数为,又知道, ...
- bzoj 2186: [Sdoi2008]沙拉公主的困惑
#include<cstdio> #include<iostream> #define ll long long #define N 10000009 using namesp ...
- BZOJ 2186 SDOI2008 沙拉公主的困惑 数论
题目大意:给定询问组数T和取模数P,每次询问给定两个整数n和m,求1~(n!)的数中与m!互质的数个个数模P (m<=n) 首先T<=1W,暴力肯定过不去,我们须要预处理一些东西 首先我们 ...
- bzoj 2186 [Sdoi2008]沙拉公主的困惑 欧拉函数
n>=m,所以就变成了求 ϕ(m!)∗n!/m! 而 ϕ(m!)=m!∗(p−1)/p...... p为m!的素因子,即为m内的所有素数,问题就转化为了求 n!∗(p−1)/p...... 只需 ...
- 【BZOJ 2186】 2186: [Sdoi2008]沙拉公主的困惑 (欧拉筛,线性求逆元)
2186: [Sdoi2008]沙拉公主的困惑 Description 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞 ...
随机推荐
- SpringMVC 转发、重定向
转发.重定向到其它业务方法 @org.springframework.stereotype.Controller @RequestMapping("/userController" ...
- Link Analysis_1_Basic Elements
1. Edge Attributes 1.1 Methods of category 1.1.1 Basic three categories in terms of number of layers ...
- C 常用库函数memset,编译器宏定义assert
一. 总览 1.1库函数 函数名 头文件 功能 原型 说明 syslog syslog.h 记录至系统记录(日志) void syslog(int, const char *, ...) __p ...
- Docker 镜像文件的导入和导出
使用save命令 保存镜像 docker save -o name_by_you.tar exist_images 将文件copy到另一台机器 使用load命令将镜像文件保存到本地仓库 docker ...
- 用sql删除数据库重复的数据的方法
/***********************************************两个意义上的重复记录:1.是完全重复的记录,也即所有字段均重复的记录,2.是部分关键字段重复的记录, ...
- 吴裕雄--天生自然JAVAIO操作学习笔记:System类对IO的支持和BuffereRead
import java.io.OutputStream ; import java.io.IOException ; public class SystemDemo01{ public static ...
- extjs开发———用extJS简单写一个饼状图
先上效果图: js编写部分简单如下,先插入一个模块,然后给模块中添加内容. var myChart1 = echarts.init(document.getElementById('myChart1' ...
- setTimeout的异步
http://www.cnblogs.com/littledu/articles/2607211.html http://www.cnblogs.com/rubylouvre/archive/2009 ...
- pyhton scipy最小二乘法(scipy.linalg.lstsq模块)
最小二乘法则是一种统计学习优化技术,它的目标是最小化误差平方之和来作为目标J(θ)J(θ),从而找到最优模型. 7. SciPy最小二乘法 最小二乘法则是一种统计学习优化技术,它的目标是最小化误差平方 ...
- C#常用类库简介(二)
原文出处:http://blog.csdn.net/weiwenhp/article/details/8140503 C#常用类库简介(一)的地址 System与mscorlib这两个dll中的类库是 ...