[SDOI2012]Longge的问题
题目大意:
网址:https://www.luogu.org/problemnew/show/P2303
大意:给定一个N,求\(\Sigma_{i=1}^N gcd(i, N);\)。
题目解法:
首先\(gcd(i,N)\)肯定为\(N\)的一个因子,也就是说\(gcd(i,N)\)的取值其实不多。
那么对于每一个结果分开考虑:
\(N\)唯一分解后:\(N = a_1^{k_1} \times a_2^{k_2} \times a_3^{k_3} ...\)
那么考虑一下当 \(gcd(T,N) = a\) 的时候:有\(T = R \times a\),并且\(gcd(\frac{N}{a},R) == 1\)
那么满足条件的\(R\)的个数为\(Φ(\frac{N}{a})\)个。(欧拉函数\(phi\)的定义)。
所以当 \(gcd(i,N)=a\) 时,总贡献为 \(a\timesΦ(\frac{N}{a})\)
所以我们的答案\(Ans = \Sigma_{i=1}^N([ d|N ]\times d\times Φ(\frac{N}{d}));\)
分析一下复杂度:枚举因子是\(O(\sqrt{N})\)的,求解因子的\(phi\)也是\(O(\sqrt{N})\)的。
所以理论时间复杂度为\(O(N)\),但是非常的不满(因子肯定没有\(\sqrt{N}\)个)。空间复杂度为\(O(1)\)。
具体实现代码:
#include<bits/stdc++.h>
#define ll long long
#define gi(x) scanf("%lld",&x)
using namespace std;
ll n,m,phi,Ans;
ll Eule(ll x){
phi = x;
for(ll e = 2;e <= sqrt(x); e ++){
if(x%e)continue;
while(!(x%e))x = x/e;
phi = phi/e*(e-1);
}
if(x != 1)phi = phi/x*(x-1);
return phi;
}
int main(){
gi(n); m = sqrt(n);
for(ll i = 1; i*i < n; i ++)
if(!(n%i))Ans += i*Eule(n/i) + (n/i)*Eule(i);
if(m*m==n)Ans += m*Eule(m);
cout<<Ans; return 0;
}
[SDOI2012]Longge的问题的更多相关文章
- BZOJ 2705: [SDOI2012]Longge的问题 [欧拉函数]
2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 2553 Solved: 1565[Submit][ ...
- BZOJ 2705: [SDOI2012]Longge的问题
2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 2554 Solved: 1566[Submit][ ...
- BZOJ 2705: [SDOI2012]Longge的问题 GCD
2705: [SDOI2012]Longge的问题 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnl ...
- bzoj 2705: [SDOI2012]Longge的问题 歐拉函數
2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 1035 Solved: 669[Submit][S ...
- Bzoj 2705: [SDOI2012]Longge的问题 欧拉函数,数论
2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 1959 Solved: 1229[Submit][ ...
- BZOJ 2705: [SDOI2012]Longge的问题( 数论 )
T了一版....是因为我找质因数的姿势不对... 考虑n的每个因数对答案的贡献. 答案就是 ∑ d * phi(n / d) (d | n) 直接枚举n的因数然后求phi就行了. 但是我们可以做的更好 ...
- 洛谷 P2303 [SDOi2012]Longge的问题 解题报告
P2303 [SDOi2012]Longge的问题 题目背景 SDOi2012 题目描述 Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数\(N\),你需要 ...
- BZOJ2705 SDOI2012 Longge的问题 【欧拉函数】
BZOJ2705 SDOI2012 Longge的问题 Description Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N,你需要求出∑gcd(i, ...
- 【bzoj2705】[SDOI2012]Longge的问题
2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 2507 Solved: 1531[Submit][ ...
- [SDOi2012]Longge的问题 (数论)
Luogu2303 [SDOi2012]Longge的问题 题目 题目背景 SDOi2012 题目描述 Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N, ...
随机推荐
- htmlUtil 网页爬取工具
Htmlunit是一款模拟浏览抓取页面内容的Java框架,具有js解析引擎(rhino),可以解析页面的js脚本,得到完整的页面内容,特殊适合于这种非完整页面的站点抓取 /** * 获取页面的TITL ...
- Apollo学习
Apollo的配置 参考: Apollo 配置详细步骤(Windows环境) MQTT再学习 -- 搭建MQTT服务器及测试 分布式部署指南 Java客户端使用指南
- C预处理器和C库
#define #include #undef #ifdef #else #endif #if #elif #else #endif 预处理宏: p463 _ _fun_ _是预定义标识符(函数作用域 ...
- Java经典编程题50道之二十一
求1+2!+3!+...+20!的和. public class Example21 { public static void main(String[] args) { sum( ...
- PHP opcache扩展安装
下面是我在PHP 5.4下的安装方法: https://pecl.php.net/get/zendopcache-7.0.5.tgz tar xzf zendopcache-7.0.5.tgz cd ...
- mysql无法启动的结果问题解决
mac 上homebrew 安装的mysql,已经用了很长时间都没什么问题,今天 ERROR! The server quit without updating PID file (/usr/loca ...
- kolla管理openstack容器
本文以nova-api容器为例,说明kolla如何将nova-api配置文件传入容器,容器如何启动nova-api服务并读取配置文件 注:第一部分比较无趣,二三部分 会有意思一些 1. nova-ap ...
- ActiveMq笔记3-AMQ高可用性理论
单点的ActiveMQ作为企业应用无法满足高可用和集群的需求,所以ActiveMQ提供了master-slave.broker cluster等多种部署方式,但通过分析多种部署方式之后我认为需要将两种 ...
- CentOS下iptables持久化
iptables规则持久化 设定防火墙规则 iptables -A INPUT -s 1.1.1.1/32 -p tcp -m tcp --dport 22 -j DROP iptables -A I ...
- C语言视频简介
通过学习<C语言基础视频教程>,可以让你对C语言有一个基础的了解,并且会编写一些基础的程序,本次视频主要讲解的内容有: 1. 数字的进制转换 2. 变量.运算符和表达式 3. 流程控制语句 ...