BZOJ 2190 SDOI 2008 仪仗队 线性欧拉筛
2024-08-31 21:45:08
标题效果:有一个格子组件图,假设三个人在一条直线上,那么第一个人将不会看到第三人。现在,有一个人站在(1,1)在。我问他是否能看到n*n的人数的矩阵。
思考:如果你想站(1,1)这名男子看到了一个立场(x,y)一个人。gcd(x,y) == 1,这是一个经典的模型,仅仅要求出n以内phi的和就能够了。
方法就是线性筛。
CODE:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define MAX 40010
using 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);
}
}
}
版权声明:本文博主原创文章。博客,未经同意不得转载。
最新文章
- JS生成二维码,允许中文转码
- 在sql脚本中获取变量中的查询结果
- mysql中int、bigint、smallint 和 tinyint的区别
- C# Socket 入门2(转)
- 安卓Android控件ListView获取item中EditText值
- 201521123015《Java程序设计》第1周学习总结
- NDK开发过程自认为好的一些参考资料
- NYOJ201作业题
- [DeeplearningAI笔记]神经网络与深度学习3.2_3.11(激活函数)浅层神经网络
- Cortex-M 实现互斥操作的三种方法
- Tensorflow实战系列之二:
- Hadoop生态圈-Oozie实战之逻辑调度执行多个Job
- CentOS 7安装SSHFS 实现远程主机目录 挂载为本地目录
- linux查看内存free
- JSP页面中的EL表达式介绍
- BURG For Ubuntu 14.04 Trusty
- 分布式一致性协议-2PC与3PC(二)
- spring security采用基于简单加密 token 的方法实现的remember me功能
- del语句
- PIE SDK与Python结合说明文档
热门文章
- Codeforces #28 C.Bath Queue (概率dp)
- 重新启动IIS不重启电脑
- Android 快速下载 Android framework 源码
- (转)Could not execute auto check for display colors using command /usr/bin/xdpyinfo. Check if the DISPL
- Centos 6 vnc 部署
- UVA 10603 - Fill BFS~
- 9.12 Binder系统_Java实现_内部机制_Client端
- Surging -Demo部署
- ORA-00119: invalid specification for system parameter LOCAL_LISTENER;
- AE开发技术文档--8种数据访问方法