P1026藿香正气液elixir

时间限制 1000 ms内存限制 512 MiB通过率 —
显示算法标签数论 · 整除分块 · 最大公约数

【题目背景】

Gioush 大队刚驶入特西荼亚海,迎面而来的风浪便让船身剧烈摇晃。tfbz 扶着船舷强撑了许久,最终还是脸色发白地坐回甲板。Ehundategh 一边翻找药箱,一边忍不住说道:

“喊你们吃藿香正气液,清热的,你们不听。——Ehundategh”

【题目描述】

药箱中共有 nn 瓶藿香正气液,依次编号为 1,2,,n1,2,\ldots,n,其中第 ii 瓶恰好装有 ii 单位药液。

为了配出合适的剂量,Ehundategh 会选出编号分别为 x,yx,y 的两瓶药液,其中 x<yx<y,再将两瓶药液分别分装成若干份。每份药液的体积必须相同且为正整数,并且两瓶药液都不能有所剩余。

Ehundategh 希望每份药液的体积尽可能大。此时,每份药液的体积为 gcd(x,y)\gcd(x,y);而编号为 yy 的药瓶比编号为 xx 的药瓶多出 yxy-x 单位药液。

若多出的药液恰好能够装满一份,也就是 gcd(x,y)=yx\gcd(x,y)=y-x,Ehundategh 就称这两瓶药液组成一对相合药剂

请你求出满足 1x<yn1\leq x<y\leq n相合药剂共有多少对。

【输入格式】

从文件 elixir.in\textbf{\textit{elixir.in}} 中读入数据。

第一行一个正整数 nn,表示药箱中药液的瓶数。

【输出格式】

输出到文件 elixir.out\textbf{\textit{elixir.out}} 中。

输出一行一个整数,表示相合药剂的数量。

【样例 1 输入】

10

【样例 1 输出】

17

【说明/提示】

【样例 1 解释】

当两数之差依次为 1,2,3,4,51,2,3,4,5 时,分别有 9,4,2,1,19,4,2,1,1 对满足条件的整数对,因此答案为 1717

【样例 2】

见选手目录下的 elixir/elixir2.in\textbf{\textit{elixir/elixir2.in}}elixir/elixir2.ans\textbf{\textit{elixir/elixir2.ans}}

该组样例符合测试点 151\sim 5 的数据范围。

【样例 3】

见选手目录下的 elixir/elixir3.in\textbf{\textit{elixir/elixir3.in}}elixir/elixir3.ans\textbf{\textit{elixir/elixir3.ans}}

该组样例符合测试点 6106\sim 10 的数据范围。

【样例 4】

见选手目录下的 elixir/elixir4.in\textbf{\textit{elixir/elixir4.in}}elixir/elixir4.ans\textbf{\textit{elixir/elixir4.ans}}

该组样例符合测试点 112011\sim 20 的数据范围。

【样例 5】

见选手目录下的 elixir/elixir5.in\textbf{\textit{elixir/elixir5.in}}elixir/elixir5.ans\textbf{\textit{elixir/elixir5.ans}}

该组样例符合测试点 112011\sim 20 的数据范围。

【数据范围】

对于 100%100\% 的数据,保证:1n10121\leq n\leq 10^{12}

测试点编号nn
151\sim 55×103\leq 5\times 10^3
6106\sim 10107\leq 10^7
112011\sim 201012\leq 10^{12}

【题解】

已公开 1 篇题解,官方题解会优先显示。

查看题解