C++数论板题(弹药科技):Lengendre定理和欧拉函数
弹药科技
时间限制: 1 Sec 内存限制: 128 MB
题目描述
经过精灵族全力抵挡,精灵终于坚持到了联络系统的重建,于是精灵向人类求助,
大魔法师伊扎洛决定弓}用博士的最新科技来抗敌。 伊扎洛:“博士,还没好吗?” 博士:“只差一步了!只需要在正确的位置装上弹药就可以了!”博士的最新科技是全新的炸弹,但是现在还需要一步装弹药的操作。博士的炸弹有N!个位置可以装弹药(>.<),但是只有在正确的位置装上弹药才能启动,博士将装弹药的位置编号为1到N!,一个位置i需要装弹药,当且仅当gcd(i, N!) ≠ 1且 N! mod i ≠0,现在博士不要求你求出所有装弹药位置,只需要你求出满足要求 的位置的数量就可以了。
输入 一个数N
输出
表示满足要求的位置数量,答案对mod1000000007输出
样例输入
4
样例输出
9
提示 【数据范围】
N <= 1000000
N!为总方案数。那么题目要求的答案便是总方案数n!减去与n!互质的数与n!的所有因子。
与n!互质的数容易想到使用欧拉函数来求
\(\varphi(n)=n*\frac{p_{1}}{(p_{1}-1)}*\frac{p_{2}}{(p_{2}-1)}*...*\frac{p_{n}}{p_{n}-1})\)
其中\(p_{i}\)表示把n分解成质因数的结果。
n!的因数个数也可以这么求\((w_{1}+1)*(w_{2}+1)*...*(w_{n}+1)\)
w为唯一分解后质数的指数。
需要注意的是,w不能直接求,需要用Lengendre定理。(这里Lengendre定理不能求模)
#include<iostream>
#include<cstdio>
using namespace std;
#define N 1000010
#define MOD 1000000007
#define LL long long
LL idx[N],prime[N],n,cnt,phi,fac=1,sum=1;
bool vis[N];
void Euler(int n) {
for(int i=2;i<=n;i++) {
if(vis[i]==0)
prime[++cnt]=i;
for(int j=1;j<=cnt && 1ll*i*prime[j]<=n;j++) {
vis[i*prime[j]]=1;
if(i%prime[j]==0) break;
}
}
}
LL LG(LL n,LL P) {
LL ans=0,sum=P;
while(n>=sum) {
ans=(ans+n/sum);
sum=sum*P;
}
return ans;
}
LL qkpow(LL base,LL indexx)
{
LL fuck=1;
while(indexx>0)
{
if(indexx&1)
fuck=fuck*base%MOD;
base=base*base%MOD;
indexx>>=1;
}
return fuck%MOD;
}
LL inv(LL sum) {
return qkpow(sum,MOD-2);
}
int main() {
cin>>n;
Euler(n);
for(int i=1;i<=n;i++)
fac=(1ll*fac*i)%MOD;
phi=fac;
for(int i=1;i<=cnt;i++) {
phi=1ll*phi*(prime[i] - 1)%MOD*inv(prime[i]) %MOD;
sum=(1ll*sum*(LG(n,prime[i])+1)%MOD)%MOD;
}
cout<<(fac-phi+MOD+MOD-sum+1)%MOD;
}
C++数论板题(弹药科技):Lengendre定理和欧拉函数的更多相关文章
- UVA10200-Prime Time/HDU2161-Primes,例题讲解,牛逼的费马小定理和欧拉函数判素数。
10200 - Prime Time 此题极坑(本菜太弱),鉴定完毕,9遍过. 题意:很简单的求一个区间 ...
- [Sdoi2010]古代猪文 (卢卡斯定理,欧拉函数)
哇,这道题真的好好,让我这个菜鸡充分体会到卢卡斯和欧拉函数的强大! 先把题意抽象出来!就是计算这个东西. p=999911659是素数,p-1=2*3*4679*35617 所以:这样只要求出然后再快 ...
- 【数论】【筛法求素数】【欧拉函数】bzoj2818 Gcd
gcd(x,y)(1<=x,y<=n)为素数(暂且把(x,y)和(y,x)算一种) 的个数 <=> gcd(x/k,y/k)=1,k是x的质因数 的个数 <=> Σ ...
- 中国剩余定理(CRT)与欧拉函数[数论]
中国剩余定理 ——!x^n+y^n=z^n 想必大家都听过同余方程这种玩意,但是可能对于中国剩余定理有诸多不解,作为一个MOer&OIer,在此具体说明. 对于同余方程: x≡c1(mod m ...
- hdu1286(找新朋友)&&POJ2407Relatives(欧拉函数模版题)
http://acm.hdu.edu.cn/showproblem.php?pid=1286 没什么好说的,模板题,主要是弄懂欧拉函数的思想. #include <iostream> #i ...
- XDU 1098 (欧拉函数模板题)
原题链接,点击此处 欧拉函数:φ(N)表示对一个正整数N,欧拉函数是小于N且与N互质的数的个数 通式:φ(x) = x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/p ...
- Exponial~(欧拉函数)~(发呆题)
Description Everybody loves big numbers (if you do not, you might want to stop reading at this point ...
- 数论 - 欧拉函数模板题 --- poj 2407 : Relatives
Relatives Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11372 Accepted: 5544 Descri ...
- 【poj 2407】Relatives(数论--欧拉函数 模版题)
题意就是求10^9以内的正整数的欧拉函数(Φ(n)表示<=n的与n互质的正整数个数). 解法:用欧拉筛和欧拉函数的一些性质: 1.若p是质数,Φ(p)=p-1: 2.欧拉函数是积性函 ...
随机推荐
- JSFL元件类型判断 转载于 https://blog.csdn.net/linking530/article/details/8364600
//获取舞台上第一层第一帧上的全部元件 var els = fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements; //遍历元件 ...
- ASE存储过程和IQ存储过程的常见区别(附例子)
ASE存储过程和IQ存储过程的常见区别(附例子) 1 存储过程简介 存储过程(Stored Procedure)是为了完成特定的功能而汇集成一组的SQL语句集,并为该组SQL语句命名.经编译后存储在S ...
- cuda 配置要点
1. 安装驱动 :sudo apt-get install nvidia- 2. 安装cuda : cuda 文件中包含驱动程序,因此在安装过程中当被问及是否安装驱动时,选择no 3. 安装cudnn ...
- Apple watch ,小米微信通知
Applewatch怎么显示微信通知?iWatch显示微信消息通知设置方法.大家都知道Applewatch上收到微信消息,iWatch是不会显示通知的,需要用户自行设置才行.下面小编来教大家如何设置A ...
- Spring 获取bean 几种方式
转载自: http://www.cnblogs.com/luoluoshidafu/p/5659574.html 1.读取xml文件的方式,这种在初学入门的时候比较适用 . ApplicationCo ...
- unfortunately,*********** has stopped及卸载模拟器上的多余不用apk
虽然不知道是怎么了,但是项目进不去了,害的我一脸雾水,百度了下好像没什么人遇到过这问题,都没找到解决办法,那只好来个简单粗暴的,卸载重新安装apk ,希望有大神知道原因和其他方法的欢迎留言或者评价给出 ...
- github 绑定域名
github的域名其实就两种,一种是个人主页,即所谓的每个账号只有一个的个人主页,XXXX.github.io,分支是master: 另一种是项目主页,可以有无数个,网上说分支应该是gh-pages, ...
- jquery cdn bootstrap静态资源库问题
使用微软静态资源库 <script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.9.0.min.js">&l ...
- 自己实现ArrayList
思路: 一 载体 ArrayList是一个集合容器,必然要有一个保存数据的载体. public class MyArraylist { private final static int INIT_CO ...
- Django继承AbstractUser新建UserInfor Model时出现fields.E304错误
错误详情: SystemCheckError: System check identified some issues: ERRORS:app01.UserInfo.groups: (fields.E ...