【BZOJ 3560】 3560: DZY Loves Math V (欧拉函数)
3560: DZY Loves Math V
Time Limit: 10 Sec Memory Limit: 256 MB
Submit: 241 Solved: 133Description
给定n个正整数a1,a2,…,an,求
的值(答案模10^9+7)。
Input
第一行一个正整数n。接下来n行,每行一个正整数,分别为a1,a2,…,an。Output
仅一行答案。Sample Input
3
6
10
15Sample Output
1595HINT
1<=n<=10^5,1<=ai<=10^7。共3组数据。
Source
【分析】
好好想这题就不难。
phi是积性函数,把i1*i2*..in分解质因数,那么答案就是Πphi[xxx]
其中一个质数p对答案的贡献就是
因为phi[p^n]=p^n*(p-1)/p 而phi[1]=1
所以要减一再加一smd
然后就暴力了。
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define Maxn 100010
#define LL long long
#define Mod 1000000007 int pri[Maxn],pl;
bool vis[Maxn]; struct node
{
int x,y;
}t[*Maxn];int len; bool cmp(node x,node y) {return (x.x==y.x)?(x.y<y.y):(x.x<y.x);} void init()
{
pl=;
memset(vis,,sizeof(vis));
for(int i=;i<=Maxn-;i++)
{
if(!vis[i]) pri[++pl]=i;
for(int j=;j<=pl;j++)
{
if(pri[j]*i>Maxn-) break;
vis[pri[j]*i]=;
if(i%pri[j]==) break;
}
}
} void ins(int x)
{
for(int i=;pri[i]*pri[i]<=x;i++) if(x%pri[i]==)
{
t[++len].x=pri[i];t[len].y=;
while(x%pri[i]==) t[len].y++,x/=pri[i];
}
if(x!=) t[++len].x=x,t[len].y=;
} int sum[Maxn]; LL qpow(int x,int b)
{
LL xx=(LL)x,ans=;
while(b)
{
if(b&) ans=(ans*xx)%Mod;
xx=(xx*xx)%Mod;
b>>=;
}
return ans;
} int main()
{
init();
int n;
scanf("%d",&n);
len=;
for(int i=;i<=n;i++)
{
int x;
scanf("%d",&x);
ins(x);
}
sort(t+,t++len,cmp);
int j;
LL ans=;
for(int i=;i<=len;i=j+)
{
j=i;
while(t[j].x==t[i].x&&j<=len) j++;j--;
sum[]=;for(int k=;k<=t[j].y;k++) sum[k]=(sum[k-]*t[i].x)%Mod;
for(int k=;k<=t[j].y;k++) sum[k]+=sum[k-];
LL now=;
for(int k=i;k<=j;k++) now=(now*sum[t[k].y])%Mod;
ans=ans*((now-)%Mod*(t[i].x-)%Mod*qpow(t[i].x,Mod-)%Mod+)%Mod;
}
printf("%lld\n",ans);
return ;
}
2017-03-23 19:39:20
【BZOJ 3560】 3560: DZY Loves Math V (欧拉函数)的更多相关文章
- [BZOJ3560]DZY Loves Math V(欧拉函数)
https://www.cnblogs.com/zwfymqz/p/9332753.html 由于欧拉函数是积性函数,可以用乘法分配律变成对每个质因子分开算最后乘起来.再由欧拉函数公式和分配律发现就是 ...
- 【bzoj3560】DZY Loves Math V 欧拉函数
题目描述 给定n个正整数a1,a2,…,an,求 的值(答案模10^9+7). 输入 第一行一个正整数n. 接下来n行,每行一个正整数,分别为a1,a2,…,an. 输出 仅一行答案. 样例输入 3 ...
- bzoj 3560 DZY Loves Math V - 线性筛 - 扩展欧几里得算法
给定n个正整数a1,a2,…,an,求 的值(答案模10^9+7). Input 第一行一个正整数n. 接下来n行,每行一个正整数,分别为a1,a2,…,an. Output 仅一行答案. Sampl ...
- 【BZOJ】3309: DZY Loves Math 莫比乌斯反演优化
3309: DZY Loves Math Description 对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007) ...
- BZOJ3560 : DZY Loves Math V
因为欧拉函数是非完全积性函数,所以可以考虑对每个数进行分解质因数,将每个质数的解乘起来即可. 对于一个质数$p$,设它在各个数中分别出现了$b_1,b_2,...b_n$次,那么由生成函数和欧拉函数的 ...
- 【BZOJ3960】DZY Loves Math V(数论)
题目: BZOJ3560 分析: orz跳瓜. 欧拉函数的公式: \[\phi(n)=n(\prod \frac{p_i-1}{p_i})\] 其中 \(p_i\) 取遍 \(n\) 的所有质因子. ...
- [BZOJ4026]dC Loves Number Theory 欧拉函数+线段树
链接 题意:给定长度为 \(n\) 的序列 A,每次求区间 \([l,r]\) 的乘积的欧拉函数 题解 考虑离线怎么搞,将询问按右端点排序,然后按顺序扫这个序列 对于每个 \(A_i\) ,枚举它的质 ...
- 【BZOJ】2005: [Noi2010]能量采集(欧拉函数+分块)
http://www.lydsy.com/JudgeOnline/problem.php?id=2005 首先和某题一样应该一样可以看出每个点所在的线上有gcd(x,y)-1个点挡着了自己... 那么 ...
- [bzoj 2190][SDOI2008]仪仗队(线性筛欧拉函数)
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2190 分析:就是要线性筛出欧拉函数... 直接贴代码了: memset(ans,,sizeof ...
随机推荐
- mongoose使用简记
mongodb中集合相当于表,常用指令 mongo 进入数据库 use yourdatabase 来选择你的数据集,这个跟关系型中的一样 show collections 来查看你数据集中的表,col ...
- Redis笔记之常用命令
keys keys用来获取符合指定规则的键,keys的语法规则如下: keys <pattern> 比如最简单的全等匹配,下面这个命令只会匹配键值完全等于foo的: 127.0.0.1:6 ...
- weblogic 配置了ssl
jingyan.baidu.com/article/72ee561abfe531e16138dfb5.html http://blog.sina.com.cn/s/blog_7ffec3e201019 ...
- Thinkphp的CURD
CURD即(Create Update Read Delete)其实也就是等同于增删改查. C:Create 创建数据 对数据的添加 Create$m=new Model('User');$m=M( ...
- pytesser模块WindowsError错误解决方法
在使用pytesser做图片文字识别时遇到 WindowsError: [Error 2] 错误,报错内容如下: Traceback (most recent call last): File &qu ...
- [How to] 使用HBase协处理器---基本概念和regionObserver的简单实现
1. 简介 对于HBase的协处理器概念可由其官方博文了解:https://blogs.apache.org/hbase/entry/coprocessor_introduction 总体来说其包含两 ...
- web deploy 安装失败解决
单独运行安装包,提示脚本运行失败. VS安装提示解包失败. 解决:检查Windows Management Instrumentation服务状态.需要非禁用.
- Python——文件打开模式辨析
版权声明:本文系原创,转载请注明出处及链接. Python中,open()函数打开文件时打开模式如r.r+ .w+.w.a.a+有何不同 r 只能读 r+ 可读可写,不会创建不存在的文件.如果直接写文 ...
- 使用Opencv时编译错误
1)无法打开包括文件: “cv.h”: No such file or directory 我的配置文件没有问题,但是一直报错,我是在HEVC测试软件HM中调用了opencv. HM有很多个工程,我只 ...
- Sublime Text 2.0.2,Build 2221注册码
Help ->Enter License,输入如下序列号: ----- BEGIN LICENSE ----- Andrew Weber Single User License EA7E-855 ...