洛谷 P2158 [SDOI2008]仪仗队 解题报告
P2158 [SDOI2008]仪仗队
题目描述
作为体育委员,C君负责这次运动会仪仗队的训练。仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图)。 现在,C君希望你告诉他队伍整齐时能看到的学生人数。

输入输出格式
输入格式:
共一个数N
输出格式:
共一个数,即C君应看到的学生人数。
说明
对于 100% 的数据,1 ≤ N ≤ 40000
今天看了一天的欧拉函数,明天月考放飞自我了...
对于欧拉函数
将正整数\(N\)用算术基本定理进行分解\(N=\prod_{i=1}^k{c_i}^{m_i}\),\(k\)为\(N\)分解质因数后的质因子种类的个数。
则\(φ(N)=N* \prod_{i=1}^{k} (1-\frac{1}{c_i})\)
证明方法需要用到容斥原理。
几个性质:
若\(gcd(a,b)=1\),则\(φ(ab)=φ(a)*φ(b)\)
积性函数定义啊。若质数\(q\)满足\(q|n\)且\(q^2|n\),则\(φ(q)=φ(n/q)*q\)
代入定义式可以得到若质数\(q\)满足\(q|n\)且\(q^2 \nmid n\),则\(φ(q)=φ(n/q)*(q-1)\)
由积性函数性质得到\(\sum_{d|n}φ(d)=n\)
先证明是积性函数,再讨论单因子即可\(φ(n)*n/2=\sum_{d},gcd(d,n)=1\)
成对存在
在看看这题。
我们以左下角为原点,第一行为\(x\)轴,第一列为\(y\)轴。
则若点\((x,y)\)能被看见,则\((dx,dy)\),\(d \in N^*\)会被遮挡
则点\((x,y)\)能被看见的条件为\(gcd(x,y)=1\),即它们互质。
那么对此,我们可以将我们要求的转换为\(\sum_{i=2}^n φ(i)\)
当然这只是右下角的一部分。
加上(0,1),(1,1),(1,0)三个点,最终答案为\(3+2*(\sum_{i=2}^n φ(i))\)
对于欧拉函数的求和,我们可以借助线性筛的思想做到线性的复杂度
可以参考代码。
code:
#include <cstdio>
const int N=40010;
int v[N],prime[N],eu[N],cnt=0,ans=0,n;
void eular()
{
for(int i=2;i<=n;i++)
{
if(!v[i])
{
v[i]=i;
prime[++cnt]=i;
eu[i]=i-1;
ans+=eu[i];
}
for(int j=1;j<=cnt;j++)
{
int tmp=i*prime[j];
if(v[i]<prime[j]||tmp>n) break;
v[tmp]=prime[j];
eu[tmp]=eu[i]*(i%prime[j]?prime[j]-1:prime[j]);
ans+=eu[tmp];
}
}
}
int main()
{
scanf("%d",&n);
n--;
if(!n) {printf("0\n");return 0;}
eular();
printf("%d\n",(ans<<1)+3);
return 0;
}
2018.5.28
洛谷 P2158 [SDOI2008]仪仗队 解题报告的更多相关文章
- 洛谷——P2158 [SDOI2008]仪仗队
P2158 [SDOI2008]仪仗队 找规律大水题嘛,如果你做过P1170 兔八哥与猎人 这题得到的规律是$a,b,c,d$,若$gcd(a-b,c-d)==1$ 那么$a,b$就能看到$c,d$ ...
- 洛谷P2158 [SDOI2008]仪仗队
题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图 ...
- 洛谷 P2158 [SDOI2008]仪仗队 && 洛谷 P1447 [NOI2010]能量采集
https://www.luogu.org/problemnew/show/P2158 以人所在位置为(0,0)建立坐标系, 显然除了(0,1)和(1,0)外,可以只在坐标(x,y)的gcd(x,y) ...
- 洛谷P2158 [SDOI2008]仪仗队 欧拉函数的应用
https://www.luogu.org/problem/P2158 #include<bits/stdc++.h> #define int long long using namesp ...
- 洛谷 P2158 [SDOI2008]仪仗队
题意简述 给定一个n,求gcd(x, y) = 1(x, y <= n)的(x, y)个数 题解思路 欧拉函数, 则gcd(x, y) = 1(x <= y <= n)的个数 ans ...
- 洛谷 P1783 海滩防御 解题报告
P1783 海滩防御 题目描述 WLP同学最近迷上了一款网络联机对战游戏(终于知道为毛JOHNKRAM每天刷洛谷效率那么低了),但是他却为了这个游戏很苦恼,因为他在海边的造船厂和仓库总是被敌方派人偷袭 ...
- 洛谷 P4597 序列sequence 解题报告
P4597 序列sequence 题目背景 原题\(\tt{cf13c}\)数据加强版 题目描述 给定一个序列,每次操作可以把某个数\(+1\)或\(-1\).要求把序列变成非降数列.而且要求修改后的 ...
- 洛谷1087 FBI树 解题报告
洛谷1087 FBI树 本题地址:http://www.luogu.org/problem/show?pid=1087 题目描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全 ...
- 洛谷 P3349 [ZJOI2016]小星星 解题报告
P3349 [ZJOI2016]小星星 题目描述 小\(Y\)是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品.她有\(n\)颗小星星,用\(m\)条彩色的细线串了起来,每条细线连着两颗小星星. 有一 ...
随机推荐
- [Spark][Python]DataFrame中取出有限个记录的例子
[Spark][Python]DataFrame中取出有限个记录的例子: sqlContext = HiveContext(sc) peopleDF = sqlContext.read.json(&q ...
- Zabbix实战-简易教程--DB类--ClickHouse
一.ClickHouse介绍 Clickhouse是一个用于联机分析处理(OLAP)的列式数据库管理系统(columnar DBMS). 传统数据库在数据大小比较小,索引大小适合内存,数据缓存命中率足 ...
- item 10: 比起unscoped enum更偏爱scoped enum
本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 一般情况下,在花括号中声明一个name(包括变量名,函数名),这个 ...
- 基于Ping和Telnet/NC的监控脚本案例分析
案例一:单纯地对某些ip进行ping监控 [root@test opt]# cat /opt/hosts_ip_list 192.168.10.10 192.168.10.11 192.168.10. ...
- Oracle数据库重做日志及归档日志的工作原理说明
Oracle数据库重做日志及归档日志的工作原理: lgwr进程将redo log buffer中的重做数据写入到redo log中,此时的redo log分组,每当一个redo log group写满 ...
- sql-server安装
ubuntu安装sql-server https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-ubuntu?view ...
- Week 7 迭代总结
写在前面: 本次我为团队博客写了一篇总结,深刻总结了我们组发生的问题以及将来要做的事情.有兴趣请移步http://www.cnblogs.com/Buaa-software Week 7 Alpha轮 ...
- Linux内核分析——第三章 进程管理
第三章 进程管理 3.1 进程 1.进程就是处于执行期的程序:进程就是正在执行的程序代码的实时结果:进程是处于执行期的程序以及相关的资源的总称:进程包括代码段和其他资源. 线程:是在进程中活动的对象. ...
- hbase 1.2.1 分布式安装
1.机器信息 五台centos 64位机器 2.集群规划 Server Name Hadoop Cluster Zookeeper Ensemble HBase Cluster Ip Hado ...
- jupyter notebook远程配置
服务器端配置 在服务器生成jupyter配置文件 $jupyter notebook --generate-config 生成之后会得到配置文件的路径 启动jupyter,设置密码 In [1]: f ...