题意

求Σ{1<=i<N} Σ{i<j<=N} GCD(i, j)     (N<=4000000)

分析

原始思路

暴力求明显是不行的,我们把式子简化形式一下发现它可以写成Σ{2<=j<=N} GCD(1~j-1, j) 这个形式就给我们一种思路:可以只枚举j,然后快速算出GCD(1~j-1, j) 我们当然不能枚举1~j-1那么算,那么再换种思路,枚举可能的答案k,即j的所有约数。分别计算GCD(1~j-1, j) = k的方案数(HDU 1695),然后加起来就能求出和了。 【求GCD(x, j) = k,x ∈ (1, j-1)的个数】我们知道j必须是k的倍数,所以可以在等式两边同时除以k变成:GCD(x, j/k) = 1,x ∈ (1, j/k-1)。那么显然答案等于phi(j/k)。

进一步优化

上面的方法还是超时,我们还需要优化。在求j的约数时会有很多无用状态,它的过程很像是暴力判断素数一样,联想到筛法求素数,我们也可以想到类似的思路:枚举k,那么k的倍数就是j,然后再算GCD(1~j-1, j) = k。


#include
#include
#include
#include
#include
#include
#define MID(x,y) ((x+y)/2)
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
const int MAX = 4000002;
int phi[MAX];
bool noprime[MAX];
vector  prime;
void Euler(int n){phi[1] = 0;for (int i = 2; i <= n; i ++){if (!noprime[i]){prime.push_back(i);phi[i] = i - 1;}for (int j = 0; j < (int)prime.size() && prime[j] * i <= n; j ++){noprime[prime[j]*i] = 1;if (i % prime[j] == 0){phi[prime[j]*i] = phi[i] * prime[j];}else{phi[prime[j]*i] = phi[i] * phi[prime[j]];}}}
}
long long f[MAX];
int main(){//freopen("test.in", "r", stdin);//freopen("test.out", "w", stdout);Euler(MAX);mem(f, 0);for (int i = 1; i < MAX; i ++){for (int n = i*2; n < MAX; n += i){f[n] += i * phi[n/i];}}int n;while(scanf("%d", &n), n){long long res = 0;for (int i = 2; i <= n; i ++){res += f[i];}printf("%lld\n", res);}return 0;
}

转载于:https://www.cnblogs.com/AbandonZHANG/p/4114062.html

UVA 11426 GCD-Extreme(II) ★ (欧拉函数)相关推荐

  1. UVA 11426 GCD - Extreme (II) (欧拉函数)

    题目传送门:点击打开链接 假设a.b(a<b)互质,那么gcd(a,b)=1,这样当i循环到a.j循环到b时就会向结果中+1,而i循环到2*a.j循环到2*b时就会向结果中+2(gcd(2*a, ...

  2. GCD - Extreme(欧拉函数变形)

    题目链接:https://vjudge.net/problem/UVA-11426 题目大意: 给出整数n∈[2,4000000],求解∑gcd(i,j),其中(i,j)满足1≤i<j≤n. 的 ...

  3. 数论 GCD 最大公约数 欧拉函数经典题 洛谷 CF1295D Same GCDs Codeforces1295D

    ​前言 两个月了,我终于更了-- 这两个月忙(chen)于(mi)内(xiang)卷(le),现在终于出新文章啦,(也算兑现了当初的出数论题文章的承诺)~ 不说废话了,今天给大家介绍一道CF/洛谷上的 ...

  4. UVa 10820 (打表、欧拉函数) Send a Table

    题意: 题目背景略去,将这道题很容易转化为,给出n求,n以内的有序数对(x, y)互素的对数. 分析: 问题还可以继续转化. 根据对称性,我们可以假设x<y,当x=y时,满足条件的只有(1, 1 ...

  5. POJ 2480 (约数+欧拉函数)

    题目链接: http://poj.org/problem?id=2480 题目大意:求Σgcd(i,n). 解题思路: 如果i与n互质,gcd(i,n)=1,且总和=欧拉函数phi(n). 如果i与n ...

  6. poj2154Color polya定理+欧拉函数优化

    没想到贱贱的数据居然是错的..搞得我调了一中午+晚上一小时(哦不d飞LJH掉RP毕竟他是BUFF)结果重判就对了五次.. 回归正题,这题傻子都看得出是polya定理(如果你不是傻子就看这里),还没有翻 ...

  7. UVA11426 GCD - Extreme (II)【欧拉函数】

    Given the value of N, you will have to find the value of G. The definition of G is given below: G=∑i ...

  8. UVA11424 GCD - Extreme (I)【欧拉函数打表】

    Given the value of N, you will have to find the value of G. The definition of G is given below: G=∑i ...

  9. 中gcd函数_欧拉函数φ(n)的计算及欧拉定理

    1 欧拉函数定义 在数论中,对正整数n,欧拉函数φ(n)是小于或等于n的正整数中与n互质的数的数目.此函数以其首名研究者欧拉命名,它又称为φ函数(由高斯所命名)或是欧拉总计函数(totient fun ...

最新文章

  1. Spring 的 Bean 生命周期,11 张高清流程图及代码,深度解析
  2. centos中使用python遇到的几个问题
  3. eclipse自动补全的设置
  4. 基于Xml 的IOC 容器-开始读取配置内容
  5. SpringMVC+Spring3.2+Hibernate4整合实例
  6. 算法:对象方式数组去重
  7. 使用vue开发一个双向展开的卷轴组件
  8. AD原理图编译WARNING:Net XXX has no driving source
  9. javascript之对象
  10. java ftp取远程服务器时间_在 Java 中如何获取 FTP 服务器上的文件修改时间
  11. 正则表达式3-兄弟的回复
  12. DarkAngels勒索病毒分析
  13. 30个有趣的Python实战项目(附源码)
  14. 三点估算 Sigma(σ)的值,期望值,标准差
  15. 如何快速查看颜色的RGB或者十六进制代码(QQ截图,最方便)
  16. 基于Nonebot2搭建QQ机器人(二)编写一个自动回复插件
  17. SEO常用的数据名词解释
  18. NavMesh基础使用
  19. 关于sbb eax, eax以及sbb eax, 0FFFFFFFFh指令连用
  20. Chart-制作饼图

热门文章

  1. php redis微信发红包,高阶篇二 使用Redis队列发送微信模版消息
  2. 系统接口对接的进度工作应该谁来干_第三方分账系统开发的那些坑,给你节省几十万...
  3. 锁相环PLL/MMCM的使用
  4. c# 非顶层截屏_C#中三种截屏方式总结
  5. 线程id 获取线程名称_016 线程及初步网络编程
  6. iphonex黑屏开不了机_手机突然黑屏开不了机充电没反应怎么办?别急,这样就可以解决...
  7. 新一代神器STM32CubeMonitor介绍、下载、安装和使用教程
  8. android 支付宝 40247,支付宝 app支付异常摘记 -- ALI40247
  9. latex beamer 空一行_握草!一行Python代码写的游戏,我能这样玩一天
  10. html中怎么显示错误信息,在html中显示为内嵌错误的文本