博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 2190 SDOI 2008 仪仗队 线性欧拉筛
阅读量:7165 次
发布时间:2019-06-29

本文共 919 字,大约阅读时间需要 3 分钟。

标题效果:有一个格子组件图,假设三个人在一条直线上,那么第一个人将不会看到第三人。现在,有一个人站在(1,1)在。我问他是否能看到n*n的人数的矩阵。

思考:如果你想站(1,1)这名男子看到了一个立场(x,y)一个人。gcd(x,y) == 1,这是一个经典的模型,仅仅要求出n以内phi的和就能够了。

方法就是线性筛。

CODE:

#include 
#include
#include
#include
#define MAX 40010using namespace std;int n;bool not_prime[MAX];int prime[MAX],primes;int phi[MAX];void Eratosthenes();int main(){ cin >> n; n--; Eratosthenes(); int ans = 0; for(int i = 2;i <= n; ++i) ans += phi[i]; cout << (ans << 1) + 3 << endl; return 0;}void Eratosthenes(){ phi[1] = 1; for(int i = 2;i <= n; ++i) { if(!not_prime[i]) prime[++primes] = i,phi[i] = i - 1; for(int j = 1;j <= primes && prime[j] * i <= n; ++j) { not_prime[prime[j] * i] = true; if(i % prime[j] == 0) { phi[i * prime[j]] = phi[i] * prime[j]; break; } else phi[i * prime[j]] = phi[i] * (prime[j] - 1); } }}

版权声明:本文博主原创文章。博客,未经同意不得转载。

你可能感兴趣的文章
洛谷 P1439【模板】最长公共子序列
查看>>
String 总结
查看>>
构造函数
查看>>
openstack 网络
查看>>
安装配置
查看>>
RabbitMQ用户管理
查看>>
修改System.Web.Mvc.WebViewPage创建自己的pageBase
查看>>
OkHttp工具类
查看>>
ThinkPHP学习 volist标签高级应用之多重嵌套循环、隔行变色(转)
查看>>
安全测试的目的,发现哪些问题
查看>>
WinForm DataGridview.AutoSizeColumnsMode属性
查看>>
linux下 html转pdf
查看>>
架构,改善程序复用性的设计~第三讲 实现一种功能的代码只能出现在一处(续)...
查看>>
ViewPager的使用
查看>>
Windows下编译Python2.7源码
查看>>
监督学习中的“生成模型”和“判别模型”
查看>>
如何编写出拥抱变化的代码
查看>>
Debug查看Struts2中ExceptionMappingInterceptor拦截器怎么把ExceptionHolder放入值栈中,以及理解拦截器的工作原理。。。...
查看>>
Linux top命令
查看>>
(三)Redis之数据结构概念以及数据结构之字符串
查看>>