题意

给一个\(n\),计算

\[\sum_{i=1}^{n}\sum_{j=1}^{i-1}[gcd(i + j, i - j) = 1]
\]

题解

令\(a = i - j\)

要求

\[\sum_{i=1}^{n}\sum_{j=1}^{i-1}[gcd(i + j, i - j) = 1]
\]

即求

\[\sum_{i=1}^{n}\sum_{a=1}^{i-1}[gcd(2*i - a, a) = 1]
\]

根据\(gcd\)的性质,即

\[\sum_{i=1}^{n}\sum_{a=1}^{i-1}[gcd(2*i, a) = 1]
\]

所以要求的就是\(1\)到\(i-1\)中,与\(2*i\)互质的数的个数。

令\(sum[i]\)为\(i\)的欧拉函数\(\phi\)的前缀和。结论是,对于奇数,答案就是\(sum[i]/2\),对于偶数,答案是\(sum[i]\)。

与\(2*i\)互质的数的个数,和\(\phi(i)\)(与\(i\)互质的数的个数)有什么关系呢?

如果\(i\)是奇数,那么\(1\)到\(i-1\)中与\(i\)互质的所有数中的奇数,都与\(2*i\)互质。而且这些数中,奇数占一半(为什么?因为对于任何一个奇数,小于它的和它互质的数,是以\(k\)和\(n-k\)的形式成对出现的。这两个数必然一奇一偶)。

如果\(i\)是偶数,那么\(1\)到\(i-1\)中与\(i\)互质的所有数,都与\(2*i\)互质。

代码

#include <cstdio>
#include <cmath>
#include <ctime>
#include <algorithm>
#include <iostream> #define FOPI freopen("in.txt", "r", stdin)
#define FOPO freopen("out.txt", "w", stdout) using namespace std;
typedef long long LL;
const int maxn = 2e7 + 5; int phi[maxn], prime[maxn];
LL sum[maxn];
int tot = 0; void getPhi(int n)
{
for (int i = 2; i <= n; i++) phi[i] = 0;
phi[1] = 1;
for (int i = 2; i <= n; i++)
{
if (!prime[i])
{
prime[++tot] = i;
phi[i] = i-1;
}
for (int j = 1; j <= tot; j++)
{
if (i*prime[j] > n) break;
prime[i*prime[j]] = 1;
if (i % prime[j] == 0)
{
phi[i*prime[j]] = prime[j] * phi[i];
break;
}
else phi[i*prime[j]] = (prime[j]-1)*phi[i];
}
}
} void init(int n)
{
getPhi(n); for (int i = 1; i <= n; i++)
if (i % 2 == 1)
sum[i] = sum[i-1] + phi[i] / 2;
else
sum[i] = sum[i-1] + phi[i];
} int t, n;
int main()
{
init(2e7);
scanf("%d", &t);
for (int ca = 1; ca <= t; ca++)
{
scanf("%d", &n);
printf("%lld\n", sum[n]);
}
}

Problem I. Count - HDU - 6434(欧拉函数)的更多相关文章

  1. hdu 6390 欧拉函数+容斥(莫比乌斯函数) GuGuFishtion

    http://acm.hdu.edu.cn/showproblem.php?pid=6390 题意:求一个式子 题解:看题解,写代码 第一行就看不出来,后面的sigma公式也不会化简.mobius也不 ...

  2. hdu 2654(欧拉函数)

    Become A Hero Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  3. hdu 2824(欧拉函数)

    The Euler function Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  4. hdu 1395(欧拉函数)

    2^x mod n = 1 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  5. hdu 3307(欧拉函数+好题)

    Description has only two Sentences Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/327 ...

  6. 找新朋友 HDU - 1286 欧拉函数模板题

    题意: 求出来区间[1,n]内与n互质的数的数量 题解: 典型的欧拉函数应用,具体见这里:Relatives POJ - 2407 欧拉函数 代码: 1 #include<stdio.h> ...

  7. hdu 2824 欧拉函数 O(nlogn) 和O(n)

    裸题 O(nlogn): #include <cstdio> #include <iostream> #include <algorithm> using name ...

  8. HDU 5528 Count a * b 欧拉函数

    题意: 定义函数\(f(n)\)为\(i \cdot j \not\equiv 0 \; (mod \; n)\)的数对\((i,j)\)的个数\((0 \leq i,j \leq n)\) \(g( ...

  9. hdu 1787(欧拉函数)

    GCD Again Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

随机推荐

  1. php面试题分享

    1.nginx使用哪种网络协议? nginx是应用层 我觉得从下往上的话 传输层用的是tcp/ip 应用层用的是http fastcgi负责调度进程 2. <? echo 'hello tush ...

  2. selenium常用方法,简版介绍

    WebElement 接口共计16个------------接口 代表一个HTML元素.通常,所有与页面交互有关的有趣操作都将通过此界面执行. void clear() void click() We ...

  3. <Linux系统uname命令用法>

    uname命令:操作系统信息的显示 uname 命令主要用于显示操作系统的信息,包括版本.平台的信息. 它的参数主要有以下: -a 显示全部信息 -s 显示内核名称 -n 显示主机名 -r 显示当前系 ...

  4. 一个简单的EventEmitter

    用JS写了一个简单的EventEmitter: class EventEmitter { /** * 事件名/回调列表 字典 * @type {Map<string, Array<func ...

  5. 【Android开发笔记】生命周期研究

    启动 onCreate onStart onResume 退出键 onPause onStop onDestroy 锁屏 & 按住 home键 & 被其他Activity覆盖(Sing ...

  6. 部署webservice到远程服务器

    在本地编写好webservice后并在本机验证正确后,在本地发布后,直接将发布时设置的文件夹复制到远程服务器上,在远程服务器的IIS上默认网站->新建虚拟目录->设置别名->物理路径 ...

  7. UML复习1-2章

    第一章 1.请对SDLC的六个阶段排序 1> 可行性分析 2> 设计 3> 测试 4> 维护 5> 需求分析与说明 6> 编码 A. 1 5 2 6 3 4 B. ...

  8. 一个SAP顾问在美国的这些年

    今天的文章来自我的老乡宋浩,之前作为SAP顾问在美国工作多年.如今即将加入SAP成都研究院S4CRM开发团队.我们都是大邑人. 大邑县隶属于四川省成都市,位于成都平原西部,与邛崃山脉接壤.东与崇州市交 ...

  9. IDEA 编辑器如何将tabs 分行显示

    https://jingyan.baidu.com/article/49ad8bcebd9e7c5834d8faac.html

  10. IOS PickerView使用

    - (void)viewDidLoad { [super viewDidLoad]; // 1.创建pickerview // pickerview有默认的frame UIPickerView *pi ...