JZOJ 4919. 【NOIP2017提高组模拟12.10】神炎皇
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′da=a'd,b=b'd
可知
Gcd(a′,b′)=1Gcd(a',b')=1
推出
Gcd(a′+b′,b′)=1Gcd(a'+b',b')=1
所以
a+b|ab=>(a′+b′)d|a′b′d2=>a′+b′|a′b′da+b|ab =>(a'+b')d|a'b'd^2=>a'+b'|a'b'd
因为
a′+b′∤a′b′a'+b'∤a'b'
所以
a′+b′|da'+b'|d
又设
d=c(a′+b′)d=c(a'+b')
则
a+b=d(a′+b′)=(a′+b′)2⋅p≤na+b=d(a'+b')=(a'+b')^2·p\leq n 且
p>0p>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′)=1Gcd(a'+b',b')=1得
Gcd(k,b′)=1Gcd(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】神炎皇相关推荐
- 【JZOJ4920】【NOIP2017提高组模拟12.10】降雷皇
题目描述 降雷皇哈蒙很喜欢雷电,他想找到神奇的电光. 哈蒙有n条导线排成一排,每条导线有一个电阻值,神奇的电光只能从一根导线传到电阻比它大的上面,而且必须从左边向右传导,当然导线不必是连续的. 哈蒙想 ...
- 【NOIP2017提高组模拟12.10】神炎皇
题目 神炎皇乌利亚很喜欢数对,他想找到神奇的数对. 对于一个整数对(a,b),若满足a+b<=n且a+b是ab的因子,则成为神奇的数对.请问这样的数对共有多少呢? 分析 设\(gcd(a,b)= ...
- JZOJ 4932. 【NOIP2017提高组模拟12.24】B
Description 现在你有 NN 个数,分别为 A1,A2,-,ANA1,A2,-,AN ,现在有M组询问需要你回答.每个询问将会给你一个L和R(L<=R)(L,保证 MaxAi−MinA ...
- 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 ...
- NOIP2017提高组模拟赛4 (总结)
NOIP2017提高组模拟赛4 (总结) 第一题 约数 设K是一个正整数,设X是K的约数,且X不等于1也不等于K. 加了X后,K的值就变大了,你可以重复上面的步骤.例如K= 4,我们可以用上面的规则产 ...
- JZOJ 5182. 【NOIP2017提高组模拟6.29】码灵鼠
Description 码零鼠是一只很喜欢mx数学的神犇,上面那个不是ta本人的样子.这天,ta在研究一个神奇的数列,这个数列是这样的: a0 = 1 an = ai + aj (n>=1, i ...
- 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 ...
- 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 ...
- 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 ...
最新文章
- PKUSC2019游记
- SAP ABAP OLE 输出数据到 Excel 无法自动保存的解决
- Python反爬机制介绍
- C++内存管理全景指南
- 使用Spring MVC进行资源版本控制
- Red Hat日志文件系统-ext3
- 黄聪:微信网页扫码登录的实现
- 厂商占用mac地址段多少排名
- 12.allegro环境设置[原创]
- 52多项式07——有理系数和整系数多项式、埃森斯坦判别法、整系数多项式的有理根
- bt php,bt.php · jiehu0992/家谱familytree - Gitee.com
- 如何使用STM32 HAL库驱动TFT-LCD实现手画板功能
- 惠普打印机双击之后没有扫描_惠普打印机为什么扫描不了,显示这个,什么意思,怎么处理?急...
- 自动采集收录导航源码
- oppo的sd卡在哪里打开_oppo手机sd卡怎么打开 oppo手机sd卡怎样打开
- Dynamics CRM: 表单(Form)中的显示字段变成只读的几种情况
- 关于计算机算法的ppt,中科院计算机算法分析与设计_习题3-4_答案.ppt
- 学习FPGA之二:云端加速
- 要你命3000List30
- JavaWeb-实现多ip、异地 同时登录踢人下线
热门文章
- 编程方法学9:字符串
- [云炬创业学笔记]第一章创业是什么测试9
- python内置函数源码_如何查看python内置函数源码
- 系统间通信3:RPC的基本概念
- 串行通信的波特率高速和低速区别
- C++Primer::头文件设计基本原则 与 预处理器介绍
- 建立合理的索引提高SQL Server的性能
- java.io.FileNotFoundException: class path resource [springmvc.xml] cannot be opened
- Keil Debug(printf) Viewer的使用
- stm32串口学习(二)