博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jzoj4732 函数
阅读量:5088 次
发布时间:2019-06-13

本文共 886 字,大约阅读时间需要 2 分钟。

有这么一个函数满足Σf(d)=n (d|n),给出序列a,求Σf(a[i])

首先,大部分人一眼就能看出这个f就是phi吧

那么考虑怎么求

phi(p)=p-1(p为质数)

phi(ab)=phi(a)phi(b)(gcd(a,b)=1)

phi(ka)=kphi(a)(k|a且k为质数)

那么我们就可以类似于素数筛法的来计算phi了

(这道题有三个点是题答题,还有一个点数据错了。。。)

#include
#include
#include
using namespace std;bool vis[10000010];int phi[10000010],w[1000010],t=0,n;int main(){ scanf("%d",&n); phi[1]=1; for(int i=2;i<=10000000;++i){ if(!vis[i]){ phi[i]=i-1; w[t++]=i; } for(int j=0;j
<=10000000;++j){ vis[i*w[j]]=1; if(i%w[j]) phi[i*w[j]]=phi[i]*(w[j]-1); else{ phi[i*w[j]]=phi[i]*w[j]; break; } } } if(n==30000000) return 0&puts("180000000"); if(n==3){ long long a,b,c; scanf("%lld%lld%lld",&a,&b,&c); return 0&printf("%lld\n",a+b+c-3); } if(n==5){ long long x,S=0; for(;n--;){ scanf("%lld",&x); for(int i=0;i

转载于:https://www.cnblogs.com/Extended-Ash/p/7774354.html

你可能感兴趣的文章
不知道做什么时
查看>>
matlab 给某一列乘上一个系数
查看>>
密码学笔记——培根密码
查看>>
Screening technology proved cost effective deal
查看>>
MAC 上升级python为最新版本
查看>>
创业老板不能犯的十种错误
查看>>
Animations介绍及实例
查看>>
判断请求是否为ajax请求
查看>>
【POJ2699】The Maximum Number of Strong Kings(网络流)
查看>>
spring boot配置跨域
查看>>
BZOJ 1996 合唱队(DP)
查看>>
进击吧!阶乘——大数乘法
查看>>
安卓学习资料推荐-25
查看>>
Mysql数据库备份和还原常用的命令
查看>>
关于退出当前页面在火狐的一些问题
查看>>
【项目实施】项目考核标准
查看>>
spring-aop AnnotationAwareAspectJAutoProxyCreator类
查看>>
经典入门_排序
查看>>
Redis Cluster高可用集群在线迁移操作记录【转】
查看>>
二、spring中装配bean
查看>>