Description

神炎皇乌利亚很喜欢数对,他想找到神奇的数对。
对于一个整数对 (a,b)(a,b),若满足 a+b<=na+b 且 a+ba+b 是 abab 的因子,则成为神奇的数对。请问这样的数对共有多少呢?

Input

一行一个整数n。

Output

一行一个整数表示答案,保证不超过64位整数范围

Sample Input

21

Sample Output

11

Data Constraint

对于20%的数据 n<=103n;
对于40%的数据 n<=105n;
对于60%的数据 n<=106n;
对于80%的数据 n<=1012n;
对于100%的数据 n<=1014n。

Solution

  • 观察a+b<=na+b 且 a+b|aba+b|ab

  • 使

    d=Gcd(a,b)

    d=Gcd(a,b)必然 d>1d>1 才能使 a+b|aba+b|ab

  • a=a′d,b=b′d

    a=a'd,b=b'd

  • 可知

    Gcd(a′,b′)=1

    Gcd(a',b')=1

  • 推出

    Gcd(a′+b′,b′)=1

    Gcd(a'+b',b')=1

  • 所以

    a+b|ab=>(a′+b′)d|a′b′d2=>a′+b′|a′b′d

    a+b|ab =>(a'+b')d|a'b'd^2=>a'+b'|a'b'd

  • 因为

    a′+b′∤a′b′

    a'+b'∤a'b'

  • 所以

    a′+b′|d

    a'+b'|d

  • 又设

    d=c(a′+b′)

    d=c(a'+b')

  • a+b=d(a′+b′)=(a′+b′)2⋅p≤n

    a+b=d(a'+b')=(a'+b')^2·p\leq n 且

    p>0

    p>0

  • 所以

    a′+b′≤n√

    a'+b'\leq \sqrt n

  • k=a′+b′

    k=a'+b',之后枚举 kk。

  • 由于p可能的取值为

    ⌊nk2⌋

    ⌊\frac{n}{k^2}⌋

  • Gcd(a′+b′,b′)=1

    Gcd(a'+b',b')=1得

    Gcd(k,b′)=1

    Gcd(k,b')=1

  • 那么b’的取值就是

    φ(k)

    φ(k)

  • 所以答案就是

    ∑k=1n√k∗⌊nk2⌋∗φ(k)

    \sum_{k=1}^{\sqrt n} k * ⌊\frac{n}{k^2}⌋ * φ(k)

  • 因为 φ(k)φ(k) 可以用线性筛法求出!

  • 最终时间复杂度就是

    O(n√)

    O(\sqrt n)

Code

#include<cstdio>
#include<cmath>
using namespace std;
typedef long long LL;
const int N=10000001;
int m;
LL n,ans;
int f[N],phi[N];
bool bz[N];
int main()
{scanf("%lld",&n);m=sqrt(n);for(int i=2;i<=m;i++){if(!bz[i]) phi[f[++f[0]]=i]=i-1;for(int j=1;j<=f[0] && i*f[j]<=m;j++){bz[i*f[j]]=true;if(i%f[j]==0){phi[i*f[j]]=phi[i]*f[j];break;}else phi[i*f[j]]=phi[i]*(f[j]-1);}}//线性筛法for(int i=2;i<=m;i++) ans+=n/(1LL*i*i)*1LL*phi[i];printf("%lld",ans);return 0;
}

JZOJ 4919. 【NOIP2017提高组模拟12.10】神炎皇相关推荐

  1. 【JZOJ4920】【NOIP2017提高组模拟12.10】降雷皇

    题目描述 降雷皇哈蒙很喜欢雷电,他想找到神奇的电光. 哈蒙有n条导线排成一排,每条导线有一个电阻值,神奇的电光只能从一根导线传到电阻比它大的上面,而且必须从左边向右传导,当然导线不必是连续的. 哈蒙想 ...

  2. 【NOIP2017提高组模拟12.10】神炎皇

    题目 神炎皇乌利亚很喜欢数对,他想找到神奇的数对. 对于一个整数对(a,b),若满足a+b<=n且a+b是ab的因子,则成为神奇的数对.请问这样的数对共有多少呢? 分析 设\(gcd(a,b)= ...

  3. JZOJ 4932. 【NOIP2017提高组模拟12.24】B

    Description 现在你有 NN 个数,分别为 A1,A2,-,ANA1,A2,-,AN ,现在有M组询问需要你回答.每个询问将会给你一个L和R(L<=R)(L,保证 MaxAi−MinA ...

  4. JZOJ 4933. 【NOIP2017提高组模拟12.24】C

    Description Input Sample Input 10 9 3580 8597 508 9110 9162 9973 6017 1942 989 646 1 3 4 405 4 3 5 5 ...

  5. NOIP2017提高组模拟赛4 (总结)

    NOIP2017提高组模拟赛4 (总结) 第一题 约数 设K是一个正整数,设X是K的约数,且X不等于1也不等于K. 加了X后,K的值就变大了,你可以重复上面的步骤.例如K= 4,我们可以用上面的规则产 ...

  6. JZOJ 5182. 【NOIP2017提高组模拟6.29】码灵鼠

    Description 码零鼠是一只很喜欢mx数学的神犇,上面那个不是ta本人的样子.这天,ta在研究一个神奇的数列,这个数列是这样的: a0 = 1 an = ai + aj (n>=1, i ...

  7. JZOJ 5186. 【NOIP2017提高组模拟6.30】tty's home

    Description Input Output Sample Input input 1: 5 1 1 1 1 1 1 2 2 3 3 4 4 5 input 2: 5 0 1 0 1 0 1 2 ...

  8. JZOJ 5185. 【NOIP2017提高组模拟6.30】tty's sequence

    Description Input Output Sample Input input 1: 6 3 1 1 1 0 0 0 input 2: 6 3 1 1 0 1 0 0 input 3: 6 3 ...

  9. JZOJ 5183. 【NOIP2017提高组模拟6.29】小T的钢琴

    Description Input Output Sample Input 9 3 A1 B2 C3 D4 E5 D4.0 C3.0 B2.0 A1.0[nya] 3 A1 A1.0 E5[qwert ...

最新文章

  1. PKUSC2019游记
  2. SAP ABAP OLE 输出数据到 Excel 无法自动保存的解决
  3. Python反爬机制介绍
  4. C++内存管理全景指南
  5. 使用Spring MVC进行资源版本控制
  6. Red Hat日志文件系统-ext3
  7. 黄聪:微信网页扫码登录的实现
  8. 厂商占用mac地址段多少排名
  9. 12.allegro环境设置[原创]
  10. 52多项式07——有理系数和整系数多项式、埃森斯坦判别法、整系数多项式的有理根
  11. bt php,bt.php · jiehu0992/家谱familytree - Gitee.com
  12. 如何使用STM32 HAL库驱动TFT-LCD实现手画板功能
  13. 惠普打印机双击之后没有扫描_惠普打印机为什么扫描不了,显示这个,什么意思,怎么处理?急...
  14. 自动采集收录导航源码
  15. oppo的sd卡在哪里打开_oppo手机sd卡怎么打开 oppo手机sd卡怎样打开
  16. Dynamics CRM: 表单(Form)中的显示字段变成只读的几种情况
  17. 关于计算机算法的ppt,中科院计算机算法分析与设计_习题3-4_答案.ppt
  18. 学习FPGA之二:云端加速
  19. 要你命3000List30
  20. JavaWeb-实现多ip、异地 同时登录踢人下线

热门文章

  1. 编程方法学9:字符串
  2. [云炬创业学笔记]第一章创业是什么测试9
  3. python内置函数源码_如何查看python内置函数源码
  4. 系统间通信3:RPC的基本概念
  5. 串行通信的波特率高速和低速区别
  6. C++Primer::头文件设计基本原则 与 预处理器介绍
  7. 建立合理的索引提高SQL Server的性能
  8. java.io.FileNotFoundException: class path resource [springmvc.xml] cannot be opened
  9. Keil Debug(printf) Viewer的使用
  10. stm32串口学习(二)