bzoj DZY Loves Math V
Time Limit: 10 Sec Memory Limit: 256 MB
Submit: 509 Solved: 284
[Submit][Status][Discuss]
Description
给定n个正整数a1,a2,…,an,求

的值(答案模10^9+7)。
Input
Output
Sample Input
6
10
15
Sample Output
HINT
1<=n<=10^5,1<=ai<=10^7。共3组数据。
Source
#include<bits/stdc++.h>
#define ll long long
#define maxn 100005
#define maxm 10000000
#define ha 1000000007
#define pb push_back
using namespace std;
vector<int> g[maxn*];
//g[i]存第i个出现的质因子的指数集合
int cnt=,n,m,dy[maxm+];
int ans=,now,mx[maxn*];
int mul[maxn]; inline int ksm(int x,int y){
int an=;
for(;y;y>>=,x=x*(ll)x%ha) if(y&) an=an*(ll)x%ha;
return an;
} inline void dvd(){
//质因数分解预处理出每个质因子有的指数集合
//dy[i]表示i这个质因子是第几个出现的
m=sqrt(now+0.5);
int c;
for(int i=;i<=m;i++) if(!(now%i)){
c=;
if(!dy[i]) dy[i]=++cnt;
while(!(now%i)) c++,now/=i;
g[dy[i]].pb(c),mx[dy[i]]=max(mx[dy[i]],c); if(now==) break;
} if(now!=){
if(!dy[now]) dy[now]=++cnt;
g[dy[now]].pb(),mx[dy[now]]=max(mx[dy[now]],);
}
} inline void solve(int x){
int tot=,dig=,pos=dy[x];
mul[]=;
//预处理等比数列前缀和
for(int i=;i<=mx[pos];i++){
dig=dig*(ll)x%ha;
mul[i]=mul[i-]+dig;
if(mul[i]>=ha) mul[i]-=ha;
} for(int i=g[pos].size()-;i>=;i--){
tot=tot*(ll)mul[g[pos][i]]%ha;
}
tot--;
if(tot<) tot+=ha;
tot=tot*(ll)(x-)%ha*(ll)ksm(x,ha-)%ha;
tot++; ans=ans*(ll)tot%ha;
} int main(){
// freopen("data.in","r",stdin);
// freopen("data.out","w",stdout); scanf("%d",&n);
while(n--){
scanf("%d",&now);
dvd();
} for(int i=;i<=maxm;i++) if(dy[i]) solve(i); printf("%d\n",ans);
return ;
}
bzoj DZY Loves Math V的更多相关文章
- 【BZOJ 3560】 3560: DZY Loves Math V (欧拉函数)
3560: DZY Loves Math V Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 241 Solved: 133 Description ...
- [BZOJ] DZY Loves Math 系列 I && II
为了让自己看起来有点事干 ,做个套题吧..不然老是东翻翻西翻翻也不知道在干嘛... \(\bf 3309: DZY \ Loves \ Math\) 令 \(h=f*\mu\) 很明显题目要求的就是\ ...
- bzoj 3560 DZY Loves Math V - 线性筛 - 扩展欧几里得算法
给定n个正整数a1,a2,…,an,求 的值(答案模10^9+7). Input 第一行一个正整数n. 接下来n行,每行一个正整数,分别为a1,a2,…,an. Output 仅一行答案. Sampl ...
- BZOJ3560 DZY Loves Math V 数论 快速幂
原文链接http://www.cnblogs.com/zhouzhendong/p/8111725.html UPD(2018-03-26):蒟蒻回来重新学数论了.更新了题解和代码.之前的怼到后面去了 ...
- BZOJ3560 : DZY Loves Math V
因为欧拉函数是非完全积性函数,所以可以考虑对每个数进行分解质因数,将每个质数的解乘起来即可. 对于一个质数$p$,设它在各个数中分别出现了$b_1,b_2,...b_n$次,那么由生成函数和欧拉函数的 ...
- BZOJ3560 DZY Loves Math V(欧拉函数)
对每个质因子分开计算再乘起来.使用类似生成函数的做法就很容易统计了. #include<iostream> #include<cstdio> #include<cmath ...
- BZOJ DZY Loves Math系列
⑤(BZOJ 3560) $\Sigma_{i_1|a_1}\Sigma_{i_2|a_2}\Sigma_{i_3|a_3}\Sigma_{i_4|a_4}...\Sigma_{i_n|a_n}\ph ...
- [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 ...
随机推荐
- [洛谷P2016] 战略游戏 (树形dp)
战略游戏 题目描述 Bob喜欢玩电脑游戏,特别是战略游戏.但是他经常无法找到快速玩过游戏的办法.现在他有个问题. 他要建立一个古城堡,城堡中的路形成一棵树.他要在这棵树的结点上放置最少数目的士兵,使得 ...
- nginx 静态文件支持跨域访问权限
一.原生态 location ^~ /repurchase-web/ { alias /var/www/webapps/repurchase-web/; } 二.支持跨 ...
- Boke光纤交换机的snmp配置
今天我配置了一下Boke光纤交换机e-300的snmp trap的配置 敲击help命令你会发现配置snmp的命令共有四个 snmpconfig Config ...
- 请把<ul><li>第1行</li><li>第2行</li>...</ul>(ul之间有10个li元素)插入body里面,注意:需要考虑到性能问题。
var html = [],i;for(i = 0; i < 10; i++){ html.push('<ul><li>第' + (i+1) + '行</li> ...
- C# 序列化理解 1(转)
序列化又称串行化,是.NET运行时环境用来支持用户定义类型的流化的机制.其目的是以某种存储形成使自定义对象持久化,或者将这种对象从一个地方传输到另一个地方. .NET框架提供了两种串行化的方式: ...
- 好几次的CSS存档
第一次: #site_nav_under { display: none; } .c_ad_block, .ad_text_commentbox { display: none; margin:; p ...
- [POJ1082&POJ2348&POJ1067&POJ2505&POJ1960]简单博弈题总结
鉴于时间紧张...虽然知道博弈是个大课题但是花一个上午时间已经极限了... 希望省选过后再回过头来好好总结一遍吧. 接下来为了看着顺眼一点...还是按照难度顺序吧 POJ1082 一道最简单的博弈 ...
- NT式驱动和WDM式驱动
刚开始学习驱动,没什么基础,对于好多名词也不是很理解,感觉每天学的驱动都不一样.......今天看了书之后才知道,原来驱动分为NT式驱动和WDM式驱动两种.大概总结一下它们之间的区别. 对于NT式驱动 ...
- 编辑器KindEditor的使用
1.具体使用方法看点这里 2.下载点这里 3.文件夹说明 ├── asp asp示例,删掉 ├── asp.net asp.net示例,删掉 ├── attached 空文件夹,放置关联文件attac ...
- 【FIRST USE】第一次用git把代码上传到github
第一次使用某个东西总是充满了伤痛,我第一次用sed的时候,毁掉了我的所有源代码,第一次用git的时候一直提示不正确,后来解决了问题,便记录下来. 首先说明我的环境,我用的是虚拟机,上面运行的64位的c ...