3560: DZY Loves Math V

Time Limit: 10 Sec  Memory Limit: 256 MB
Submit: 241  Solved: 133

Description

给定n个正整数a1,a2,…,an,求

的值(答案模10^9+7)。

Input

第一行一个正整数n。
接下来n行,每行一个正整数,分别为a1,a2,…,an。

Output

仅一行答案。

Sample Input

3
6
10
15

Sample Output

1595

HINT

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 (欧拉函数)的更多相关文章

  1. [BZOJ3560]DZY Loves Math V(欧拉函数)

    https://www.cnblogs.com/zwfymqz/p/9332753.html 由于欧拉函数是积性函数,可以用乘法分配律变成对每个质因子分开算最后乘起来.再由欧拉函数公式和分配律发现就是 ...

  2. 【bzoj3560】DZY Loves Math V 欧拉函数

    题目描述 给定n个正整数a1,a2,…,an,求 的值(答案模10^9+7). 输入 第一行一个正整数n. 接下来n行,每行一个正整数,分别为a1,a2,…,an. 输出 仅一行答案. 样例输入 3 ...

  3. bzoj 3560 DZY Loves Math V - 线性筛 - 扩展欧几里得算法

    给定n个正整数a1,a2,…,an,求 的值(答案模10^9+7). Input 第一行一个正整数n. 接下来n行,每行一个正整数,分别为a1,a2,…,an. Output 仅一行答案. Sampl ...

  4. 【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) ...

  5. BZOJ3560 : DZY Loves Math V

    因为欧拉函数是非完全积性函数,所以可以考虑对每个数进行分解质因数,将每个质数的解乘起来即可. 对于一个质数$p$,设它在各个数中分别出现了$b_1,b_2,...b_n$次,那么由生成函数和欧拉函数的 ...

  6. 【BZOJ3960】DZY Loves Math V(数论)

    题目: BZOJ3560 分析: orz跳瓜. 欧拉函数的公式: \[\phi(n)=n(\prod \frac{p_i-1}{p_i})\] 其中 \(p_i\) 取遍 \(n\) 的所有质因子. ...

  7. [BZOJ4026]dC Loves Number Theory 欧拉函数+线段树

    链接 题意:给定长度为 \(n\) 的序列 A,每次求区间 \([l,r]\) 的乘积的欧拉函数 题解 考虑离线怎么搞,将询问按右端点排序,然后按顺序扫这个序列 对于每个 \(A_i\) ,枚举它的质 ...

  8. 【BZOJ】2005: [Noi2010]能量采集(欧拉函数+分块)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2005 首先和某题一样应该一样可以看出每个点所在的线上有gcd(x,y)-1个点挡着了自己... 那么 ...

  9. [bzoj 2190][SDOI2008]仪仗队(线性筛欧拉函数)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2190 分析:就是要线性筛出欧拉函数... 直接贴代码了: memset(ans,,sizeof ...

随机推荐

  1. Spark 基本架构及原理

    转载自: http://blog.csdn.net/swing2008/article/details/60869183 转自:http://www.cnblogs.com/tgzhu/p/58183 ...

  2. 记一个多线程使用libevent的问题

    前段时间使用libevent网络库实现了一个游戏服务器引擎,在此记录下其中遇到的一个问题. 我在设计服务器上选择把逻辑和网络分线程,线程之间通信使用队列.但是这样做会有个问题: 当逻辑线程想要主动的发 ...

  3. 【转载】selenium之 定位以及切换frame(iframe)

    更多关于python selenium的文章,请关注我的专栏:Python Selenium自动化测试详解 总有人看不明白,以防万一,先在开头大写加粗说明一下: frameset不用切,frame需层 ...

  4. 55.Jump Game---dp

    题目链接 题目大意:给一个数组,第i个位置的值表示当前可以往前走的最远距离,求从第一个位置能否顺利走到最后一个位置.例子如下: 法一(借鉴):DP,dp[i]表示从上一个位置走到当前位置时,剩余的可以 ...

  5. 013 GC机制

    本文转自:https://www.cnblogs.com/shudonghe/p/3457990.html 最近还是在找工作,在面试某移动互联网公司之前认为自己对Java的GC机制已经相当了解,其他面 ...

  6. Python 类的名称空间和组合

    一.Python类的名称空间 class Student(object): School = '北京大学' def __init__(self): pass stu1 = Student() stu1 ...

  7. ECharts图表tooltip显示时超出canvas图层解决方法

    我们在做ECharts图表的时候可能会遇到tooltip显示时超出了canvas图层范围,并且被其它z-index较高的div容器遮盖,这是悬浮展示信息就看不全,我们根据官网文档的配置项查询发现con ...

  8. C# String.Format用法和格式说明

    1.格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元) string.Format("{0:C}",0.2) 结果为:¥0.20 (英文操作系统结果:$0 ...

  9. PTP简介

    PTP简介 在通信网络中,许多业务的正常运行都要求网络时钟同步,即整个网络各设备之间的时间或频率差保持在合理的误差水平内.网络时钟同步包括以下两个概念: l              时间同步:也叫相 ...

  10. golang基础之三-字符串,时间,流程控制,函数

    strings和strconv的使用 strings strings.HasPrefix(s string,preffix string) bool:判断字符串s是否以prefix开头 stirngs ...