UVA11426 GCD - Extreme (II) —— 欧拉函数
题目链接:https://vjudge.net/problem/UVA-11426



题意:
求 ∑ gcd(i,j),其中 1<=i<j<=n 。
题解:
1. 欧拉函数的定义:满足 0<x<n 且 gcd(x,n) = 1 的x有euler[n]个。
2. 可以推论出:满足 0<2*x<2*n 且 gcd(2*x,2*n) = 2 的2*x同样有euler[n]个,推向一般:满足 0<k*x<k*n 且 gcd(k*x,k*n) = k 的k*x有euler[n]个。解释:其实就是对于n来说,在1~n-1内与它互质的数都乘上相应的倍数,同时n也乘上相应的倍数,因而他们的最大公约数也为乘上的倍数,但不管如何,个数没有改变,仍为euler[n]个,只不过是他们的值“放大”了罢。
3. 有了上述结论,就可以枚举每个欧拉函数euler[n]和系数k,然后进行统计。
AC代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <string>
#include <set>
using namespace std;
typedef long long LL;
const int INF = 2e9;
const LL LNF = 9e18;
const int MOD = 1e9+;
const int MAXN = +; int euler[MAXN];
void getEuler()
{
memset(euler, , sizeof(euler));
euler[] = ;
for(int i = ; i<MAXN; i++) if(!euler[i]) {
for(int j = i; j<MAXN; j += i)
{
if(!euler[j]) euler[j] = j;
euler[j] = euler[j]/i*(i-);
}
}
} LL sum[MAXN];
void init()
{
getEuler();
memset(sum, , sizeof(sum));
for(int i = ; i<MAXN; i++) // 枚举“单位”欧拉数
for(int k = ; i*k<MAXN; k++) // 枚举倍数
sum[i*k] += k*euler[i]; for(int i = ; i<MAXN; i++)
sum[i] += sum[i-];
} int main()
{
init();
int n;
while(scanf("%d", &n) &&n)
printf("%lld\n", sum[n]);
}
UVA11426 GCD - Extreme (II) —— 欧拉函数的更多相关文章
- UVA11426 GCD - Extreme (II) (欧拉函数/莫比乌斯反演)
UVA11426 GCD - Extreme (II) 题目描述 PDF 输入输出格式 输入格式: 输出格式: 输入输出样例 输入样例#1: 10 100 200000 0 输出样例#1: 67 13 ...
- UVA11426 GCD - Extreme (II)---欧拉函数的运用
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- UVA 11426 GCD - Extreme (II) (欧拉函数+筛法)
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=70017#problem/O 题意是给你n,求所有gcd(i , j)的和,其中 ...
- UVA 11426 GCD - Extreme (II)(欧拉函数打表 + 规律)
Given the value of N, you will have to find the value of G. The definition of G is given below:Here ...
- uva 11426 GCD - Extreme (II) (欧拉函数打表)
题意:给一个N,和公式 求G(N). 分析:设F(N)= gcd(1,N)+gcd(2,N)+...gcd(N-1,N).则 G(N ) = G(N-1) + F(N). 设满足gcd(x,N) 值为 ...
- UVA 11426 - 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< ...
- UVA 11426 GCD - Extreme (II) 欧拉函数
分析:枚举每个数的贡献,欧拉函数筛法 #include <cstdio> #include <iostream> #include <ctime> #include ...
- UVA 11424 GCD - Extreme (I) (欧拉函数+筛法)
题目:给出n,求gcd(1,2)+gcd(1,3)+gcd(2,3)+gcd(1,4)+gcd(2,4)+gcd(3,4)+...+gcd(1,n)+gcd(2,n)+...+gcd(n-1,n) 此 ...
- GCD - Extreme(欧拉函数变形)
题目链接:https://vjudge.net/problem/UVA-11426 题目大意: 给出整数n∈[2,4000000],求解∑gcd(i,j),其中(i,j)满足1≤i<j≤n. 的 ...
随机推荐
- GIS可视化
作为一名GIS专业的学生,一晃也毕业三年了,在supermap也呆了三年多了,做的最多的就是浏览器端的GIS展示,最近也想分享一下我们团队在浏览器端GIS可视化的一些成果,算是做个宣传吧!有用的着的可 ...
- Django和Flask的区别以及运行流程
Django: Python Web框架里比较有名当属Django,Django功能全面,它提供一站式解决方案,集成了MVT(Model-View-Template)和ORM,以及后台管理.但是缺点也 ...
- sql server 数据库系统整理——数据表的创建和管理
注意: 1. 固定长度字符类型比非固定长度字符类型占用空间要大,可是因为进行字段值设置的时候固定长度字符类型无需进行长度处理就能够进行,因此它的处理速度更快. 所以 对于长度相对固 ...
- iPhone X
iPhone X前置深度摄像头带来了Animoji和face ID,同时也将3D Face Tracking的接口开放给了开发者.有幸去Cupertino苹果总部参加了iPhone X的封闭开发,本文 ...
- C#高级编程---暂停计划
学了两个半月的C#高级编程这本书,看到了第三部分,说实话,我有点怂了,我认怂,临时先放一下,博客暂停,由于我的水平确实不会了,在写下去也是自欺欺人,我决定先研究研究我比較喜欢的脚本语言JS,開始写的, ...
- VC进程间通信之消息传递PostMessge()或SendMessage()
1. 进程内消息: (1). 仅仅传消息码 (2). 传送消息串 发送端: void CTestDlg::OnBnClickedButtonSend() { CString* msg = new C ...
- 25:坐标移动CoordinateMove
题目描述 开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动.从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面. 输入: 合 ...
- Qt中的对象类型转换
char * 与 const char *的转换 char *ch1="hello11"; const char *ch2="hello22"; ch2 = c ...
- 根据URL发起HTTP请求,我的HTTPHelper。
完整的demo using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...
- Go 语言从新手到大神:每个人都会踩的五十个坑(转)
Go语言是一个简单却蕴含深意的语言.但是,即便号称是最简单的C语言,都能总结出一本<C陷阱与缺陷>,更何况Go语言呢.Go语言中的许多坑其实并不是因为Go自身的问题.一些错误你再别的语言中 ...