nssl1232-函数【数论,欧拉函数,莫比乌斯反演】

正题


题目大意

∑d∣nf(d)=n\sum_{d|n}f(d)=ndnf(d)=n
对于n个aia_iai

∑i=1nf(ai)\sum_{i=1}^nf(a_i)i=1nf(ai)


解题思路——莫比乌斯反演

这个方法对于aia_iai比较大时比较好用,但是事实证明本题过不了。
用莫比乌斯反演可得到此公式
f(n)=∑d∣nμ(d)∗ndf(n)=\sum_{d|n}\mu(d)*\frac{n}{d}f(n)=dnμ(d)dn
根据莫比乌斯函数的性质,可以将n分解质因数,然后搜索分解的质因数,然后搜索每个质因数选或不选,来计算答案
时间复杂度:O(nlogai)O(n\ \ log\ a_i)O(n  log ai)


code——莫比乌斯反演

\

#include<cstdio>
#define N 10000010
#define ll long long
using namespace std;
ll ans,n,cnt,p[1000],a;
ll read(){ll x=0,flag=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')flag=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*flag;
}
void write(ll x)
{if(x>9) write(x/10);putchar(x%10+48);return;
}
void dfs(ll x,ll sum,ll c)//搜索
{if(x>cnt){ans+=a/sum*((c%2)?-1:1);return;}dfs(x+1,sum*p[x],c+1);dfs(x+1,sum,c);
}
void get_ans(ll n)//获取答案
{cnt=0;a=n;for(ll i=2;i*i<=n;i++){if(n%i==0) p[++cnt]=i;while(n%i==0) n/=i;}if(n>1) p[++cnt]=n;dfs(1,1,0);
}
int main()
{n=read();if(n==30000000){get_ans(7);write(ans*30000000);return 0;}ans=0;for(ll i=1;i<=n;i++)get_ans(read());write(ans);
}

解题思路——欧拉函数

注:最后几个点要打表
我们其实可以发现f(ai)=φ(ai)f(a_i)=\varphi(a_i)f(ai)=φ(ai)
时间复杂度:O(max{ai}+n)O(max\{a_i\}+n)O(max{ai}+n)


code——欧拉函数

#include<cstdio>
#define ll long long
#define N int(1e7)+10
using namespace std;
ll n,a,phi[N],prime[N],ans,m,v[N];
void euler(ll n)//线性
{m=0;phi[1]=1;for(ll i=2;i<=n;i++){if(v[i]==0){v[i]=i,prime[++m]=i;phi[i]=i-1;}for(ll j=1;j<=m;j++){if(prime[j]>v[i]||prime[j]>n/i) break;v[i*prime[j]]=prime[j];phi[i*prime[j]]=phi[i]*(i%prime[j]?prime[j]-1:prime[j]);}}
}
int main()
{scanf("%lld",&n);if (n==30000000) return !printf("180000000");else if (n==3) return !printf("525162079891401242");else if (n==5) return !printf("21517525747423580");euler(N-10);for(ll i=1;i<=n;i++){scanf("%lld",&a);ans+=phi[a];}printf("%lld",ans);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/323300.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从0部署一个动态网站

准备&#xff1a;购买域名和服务器 下载软件&#xff1a;服务器上下载宝塔面板和xampp 首先区分动态网站和静态网站区别&#xff1a;动态网站是指数据可以交互的&#xff0c;根据不同的人出现不同的页面&#xff0c;要用到数据库和php。登录注册是动态网站最基础的部分 而静态…

最新的.NET Framework聚焦于改进可访问性

Microsoft宣布预发布.NET Framework 4.7.1&#xff0c;其中包括了各种全面的改进。这里&#xff0c;我们关注一下在WPF应用可访问性上所做的改进。改进的设想针对领域是屏幕报读器&#xff08;Screen Reader&#xff09;和高对比度场景。Microsoft的Preeti Krishna表示&#xf…

MYSQL 入门全套

转载自 MYSQL 入门全套 MySQL简介 1、什么是数据库 &#xff1f; 数据库&#xff08;Database&#xff09;是按照数据结构来组织、存储和管理数据的仓库&#xff0c;它产生于距今六十多年前&#xff0c;随着信息技术和市场的发展&#xff0c;特别是二十世纪九十年代以后&am…

nssl1230-序列【位运算】

正题 题目大意 长度为n的序列&#xff0c;求两个长度大于等于kkk的连续序列&#xff0c;一个位运算“和”后最大的答案&#xff0c;和“或”后最大的答案。 解题思路 首先ororor baorxba\ or\ xba or x的话&#xff0c;b⩾ab\geqslant ab⩾a 所以答案就是所有的或起来 然后a…

ImageSharp一个专注于NetCore平台图像处理的开源项目

今天大家分享的是一个专注于NetCore平台图像处理的开源项目&#xff0c;老实说为这篇文章取名字想了5分钟&#xff0c;可能是词穷亦或是想更好的表达出这款开源项目的作用&#xff1b;这个项目在图像处理方面有很多功能&#xff0c;如&#xff1a;缩放&#xff0c;裁剪&#xf…

【开源组件】一份值得收藏的的 MySQL 规范

转载自 【开源组件】一份值得收藏的的 MySQL 规范 数据命名规范 所有数据库对象名称必须使用小写字母并用下划线分割。 所有数据库对象名称禁止使用 MySQL 保留关键字&#xff08;如果表名中包含关键字查询时&#xff0c;需要将其用单引号括起来&#xff09;。 数据库对象的…

vue前期知识点笔记

学习Vue生命周期函数&#xff0c;并且逐个使用&#xff1b; 用路由完成视图的切换&#xff1b; v-bind和v-mode区别 一个绑定的是尖括号外的&#xff0c;一个绑定的是尖括号里的举例&#xff1a; <img :src"url"><h1 v-model"message">{{me…

ssl提高组周六备考赛【2018.10.27】

前言 高三dalao试图混入其中 成绩 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCC1112017myself2017myself2017myself2052052052525258080801001001002222013lyy2013lyy2013lyy2002002001001001007070703030303332015hjw2015hjw2015hjw1201201203030309090900004442…

关于 JVM 内存的 N 个问题

转载自 关于 JVM 内存的 N 个问题 JVM的内存区域是怎么划分的&#xff1f; JVM的内存划分中&#xff0c;有部分区域是线程私有的&#xff0c;有部分是属于整个JVM进程&#xff1b;有些区域会抛出OOM异常&#xff0c;有些则不会&#xff0c;了解JVM的内存区域划分以及特征&am…

RedHat宣布支持Azure、.Net Core 2.0和SQL Server 2017

近期&#xff0c;Microsoft和RedHat宣布支持在Red Hat OpenShift上运行Windows容器。此次宣布所针对的主要场景&#xff0c;是让Linux和Windows容器工作于同一集群中。这将使具有混杂环境的企业无需分别运行Windows集群和Linux集群&#xff0c;企业可以迁移到基于容器的同一种架…

安装webpack

全局安装 npm install -g webpack 项目中安装 npm install --save-dev webpack 安装webpack遇到个坑&#xff0c;问题的话应该是项目使用的是webpack2.X版本&#xff0c;这样就会覆盖之前的版本&#xff0c;导致项目配置错误。 所以最好不要用全局安装 cd进相关文件夹后 cnpm …

如何求解两个数的最大公约数

#include <iostream> using namespace std; //暴力法求解最大公约数 int main() {int m,n,t;cout<<"请输入两个整数&#xff1a;";cin>>m>>n;if(m<n){int tempm;mn;ntemp;}for(int in;i>1;i--){if(m%i0&&n%i0){ti;break;}}cou…

【附答案】Java面试2019常考题目汇总(一)

转载自 【附答案】Java面试2019常考题目汇总&#xff08;一&#xff09; 一、JAVA基础篇-概念 1.简述你所知道的Linux&#xff1a; Linux起源于1991年&#xff0c;1995年流行起来的免费操作系统&#xff0c;目前&#xff0c; Linux是主流的服务器操作系统&#xff0c; 广泛…

2017中国开源年会(COSCon'17) 报名正式开启

继成功举办了2015年中国开源年会暨阿帕奇中国路演&#xff0c;及2016年中国开源年会之后&#xff0c;开源社再接再厉主办的2017中国开源年会 (COSCon17-China Open Source Conference 2017) 将于今年11月18-19日&#xff08;周六-周日&#xff09;在上海交大闵行校区陈瑞球楼举…

ERROR in multi ./src/main.js dist/bundle.js

原命令 webpack .\src\main.js .\dist\bundle.js 报错 ERROR in multi ./src/main.js ./dist/bundle.js Module not found: Error: Can’t resolve ‘.\dist\bundle.js’ in ‘C:\Users\Tecna1205\Desktop\vue\webpack-study’ multi ./src/main.js ./dist/bundle.js main[1] …

nssl1247-A【dp】

正题 题目大意 将n个相同球放到k个相同的盒子里&#xff0c;求方案数。 解题思路 其实就是将n划分成k份&#xff0c;要求前面份的大于等于后面的&#xff0c;所以我们可以写dp fi,jf_{i,j}fi,j​表示分成i组&#xff0c;分了j。 然后 fi,jfi−1,j−1fi,j−if_{i,j}f_{i-1,j-1…

从头编写 asp.net core 2.0 web api 基础框架 (4) EF配置

Github源码地址&#xff1a;https://github.com/solenovex/Building-asp.net-core-2-web-api-starter-template-from-scratch 前三部分弄完&#xff0c;我们已经可以对内存数据进行CRUD的基本操作&#xff0c;并且可以在asp.net core 2中集成Nlog了。 下面继续&#xff1a; Ent…

十大网站推荐

在b站上面看到个视频推荐的网站&#xff0c;感觉质量不错&#xff0c;先记下来&#xff0c;方便以后自己用到的时候来查 1.视频片头动画模板 https://panzoid.com/ 2.在线抠图 https://www.remove.bg/ 3.字体下载 https://www.zitijia.com/ 4. p站 &#xff08;二次元插画网站…

nssl1249-C【数论】

正题 题目大意 求 ∑a1n∑b1a(gcd(a,b)axorb)\sum_{a1}^n\sum_{b1}^a(gcd(a,b)a\ xor\ b)a1∑n​b1∑a​(gcd(a,b)a xor b) 解题思路 因为ababab时肯定不成立&#xff0c;所以直接计算a>ba>ba>b 那么gcd(a,b)⩽a−bgcd(a,b)\leqslant a-bgcd(a,b)⩽a−b&#xff0c;…

顺序表基本操作在主函数中的实现

#include<iostream> #define OK 1 #define ERROR 0 #define OVERFLOW -2 #define MAXSIZE 100 using namespace std;typedef int Status;typedef struct {int *elem;int length; } SqList; //构建空线性表 Status InistList(SqList &L) {L.elemnew int [MAXSIZE];if(…