[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, ...
随机推荐
- jQuery smartMenu右键自定义上下文菜单插件
http://www.zhangxinxu.com/wordpress/?p=1667 <%@ page contentType="text/html; charset=UTF-8&q ...
- js压缩上传图片
初学有不当之处,请多多指点, <body> <div class="cc"> <input type="file" id=&quo ...
- C++ Primer Plus阅读笔记
cin进行文本输入 使用cin获取字符的基本方式 char ch; cin >> ch; cin读取char值时将忽略空格和换行符.此外,发送给cin的输入被缓冲.这意味着只有在用户按下回 ...
- B站标题/子标题/url爬取示例(requests+re)
#coding:utf-8 __author__ = "zhoumi" 3 import requests import re import urllib ''' 本文档目的在于获 ...
- PHP函数register_shutdown_function的用法
register_shutdown_function这个函数是在PHP程序运行结束之前调用的,用这个函数可以做很多,比如调用运行发生致命错误中止的原因,或者调试程序的执行时间等. PHP终止的情况有哪 ...
- CentOS7上安装FTP服务
---------------------------------------------------------------------------------------------------- ...
- hdu1251 map水过
更快的方法应该是字典树,不用处理前缀. AC代码: #include<iostream> #include<cstring> #include<string> #i ...
- nginx笔记2-负载均衡
负载均衡实现方式分为两类:1硬件类,2软件类. 硬件类:F5(这是一种硬件,并不是刷新啊,不要误解) 优点:非常快,可靠性高,并发量大.缺点:太贵,成本高,不方便,最致命的是不能将动态请求和静态请求 ...
- 总结MySQL大数据量下如何进行优化
写在建库前: 在确定数据库业务后.建立数据库表格时,就应对一些常见问题有所考虑,以避免在数据增长一段时间后再做应对,可能造成时间及维护成本增加: 数据的月增量,年增量 数据的快速增长点 是否需要触发器 ...
- csrf
什么是CSRF: CSRF(Cross-site request forgery),中文名称:跨站请求伪造 攻击者盗用了你的身份,以你的名义发送恶意请求.CSRF能够做的事情包括:以你名义发送邮件,发 ...