【bzoj2818】【GCD】【数论】
2015-08-31 15:11
736 查看
Description
给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对.
Input
一个整数NOutput
如题Sample Input
4Sample Output
4HINT
hint对于样例(2,2),(2,4),(3,3),(4,2)
1<=N<=10^7
题解:首先求出phi的值,然后做一个前缀和。然后枚举<n的每一个质数。所有<=n/p[i]的互质的两个数乘上p[i]都小于n且gcd为p[i];因为已经做前缀和所以直接加上phi[n/p[i]]*2-1即可。
</pre><pre name="code" class="cpp">#include<iostream> #include<cstdio> using namespace std; int p[1000001],phi[10000010],n; long long ans,s[10000010]; bool f[10000010]; void cal(int n) { phi[1]=1; for (int i=2;i<=n;i++) { if (!f[i]){phi[i]=i-1;p[++p[0]]=i;} for (int j=1;j<=p[0]&&p[j]*i<=n;j++) { f[p[j]*i]=true; if (i%p[j]==0){phi[i*p[j]]=phi[i]*p[j];break;} else phi[i*p[j]]=phi[i]*phi[p[j]]; } } } int main() { scanf("%d",&n); cal(n); for (int i=1;i<=n;i++) s[i]=s[i-1]+(long long)phi[i]; for (int i=1;i<=p[0];i++) ans+=s[n/p[i]]*2-1; cout<<ans<<endl; }
相关文章推荐
- 修改本地活动网络连接的DNS
- 如何获得你的准确位置及iphon手机应用定位不准确原因分析
- 关于Qt Designer.exe无法启动的问题
- Eclipse 安装插件后不显示的解决办法
- iOS利用block实现链式编程方法(Objective-C链式编程)
- OC之ARC环境中的循环strong问题
- STM32访问外部存储器的时序计算
- RTEMS 介绍
- iPhone Development 101: Objective-C: Objective-C: Custom URL Schemes
- ThinkPHP自动填充实现无限级分类的方法
- sqlmap使用笔记
- ov9650摄像头驱动之——linux内核v4l2架构分析3
- APP Store下载一直等待中解决办法
- C#委托学习
- NTP协议
- ov9650摄像头驱动之——linux内核v4l2架构分析2
- mybatis 批量查询参数语句
- jsp调用javabean出现错误HTTP Status 500 - Unable to compile class for JSP
- java --threadgroup线程组与UncaughtExceptionHandler
- poj 2449Remmarguts' Date uvaoj 10740 not the best dijkstra或spfa或bellman-ford k短路 A*