P2158 [SDOI2008] 仪仗队(欧拉函数模板)
题目描述
作为体育委员,C君负责这次运动会仪仗队的训练。仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图)。
现在,C君希望你告诉他队伍整齐时能看到的学生人数。
分析就不写了都写得很《《《《全》》》》了
就当看模板叭 #include<iostream>
#include<cstdio>
using namespace std;
typedef long long ll;
int rd(){
ll x=,fl=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')fl=-;ch=getchar();}
while(ch>=''&&ch<=''){x=(x<<)+(x<<)+(ch^);ch=getchar();}
return x*fl;
}
int n,ans,cnt,pri[],ex[],phi[];
/*ola打表*/
void ola(){
ex[]=ex[]=;cnt=;
for(int i=;i<=n;i++){
if(!ex[i]){
pri[++cnt]=i;//如果是素数的话,它的欧拉函数就等于他自己-1
phi[i]=i-;
}
for(int j=;j<=cnt&&pri[j]*i<=n;j++){
ex[pri[j]*i]=;
if(i%pri[j])phi[i*pri[j]]=phi[i]*(pri[j]-);//下面是不是素数的情况下分两种情况讨论的递推公式
else{
phi[i*pri[j]]=phi[i]*pri[j];
break;
}
}
}
}
int ola2(int n){
if(n==)return ;
int ans=n,k=;
for(int i=;n!=;i+=k)
if(!(n%i)){
ans/=i;ans*=(i-);
while(!(n%i))
n/=i;
i=k;
}
return ans;
}
int main(){
n=rd();
ola();
for(int i=;i<n;i++)
ans+=phi[i];
// for(int i=2;i<n;i++)
// ans+=ola2(i); // 另一种做法(好慢。。
printf("%d",ans*+);
return ;
}
P2158 [SDOI2008] 仪仗队(欧拉函数模板)的更多相关文章
- P2158 [SDOI2008]仪仗队 欧拉函数模板
题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图 ...
- P2158 [SDOI2008]仪仗队 && 欧拉函数
P2158 [SDOI2008]仪仗队 题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线 ...
- 洛谷P2158 [SDOI2008]仪仗队 欧拉函数的应用
https://www.luogu.org/problem/P2158 #include<bits/stdc++.h> #define int long long using namesp ...
- BZOJ2190 [SDOI2008]仪仗队 [欧拉函数]
题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图 ...
- 【bzoj2190】[SDOI2008]仪仗队 欧拉函数
题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图 ...
- 【P2158】仪仗队&欧拉函数详解
来一道数论题吧. 这个题一眼看上去思路明确,应该是数论,但是推导公式的时候却出了问题,根本看不出来有什么规律.看了马佬题解明白了这么个规律貌似叫做欧拉函数,于是就去百度学习了一下这东西. 欧拉函数的含 ...
- luogu2158 [SDOI2008]仪仗队 欧拉函数
点 $ (i,j) $ 会看不见当有 $ k|i $ 且 $ k|j$ 时. 然后就成了求欧拉函数了. #include <iostream> #include <cstring&g ...
- BZOJ 2190: [SDOI2008]仪仗队( 欧拉函数 )
假设C君为(0, 0), 则右上方为(n - 1, n - 1). 一个点(x, y) 能被看到的前提是gcd(x, y) = 1, 所以 answer = ∑ phi(i) * 2 + 2 - 1 ...
- 2190: [SDOI2008]仪仗队(欧拉函数)
2190: [SDOI2008]仪仗队 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 3235 Solved: 2089 Description 作 ...
- P2158 [SDOI2008] (欧拉函数
题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图 ...
随机推荐
- 实战ELK(8) 安装ElasticSearch中文分词器
安装 方法1 - download pre-build package from here: https://github.com/medcl/elasticsearch-analysis-ik/re ...
- python3+2 不换行打印,多用于进度条 process bar
python3 不换行打印,多用于进度条 process bar process = 0 # process bar for i in user: process += 1 print("\ ...
- 【Python】爬虫
参考:http://www.cnblogs.com/fnng/p/3576154.html import urllib,re page = urllib.urlopen('http://trend.b ...
- python———day01
一.变量命名规则: 1,要有描述性: 2,变量名只能以 下划线,数字,字母组成,不可以有特殊符号和空格: 3,不能以中文为变量名(规范): 4,不能以数字开头: 5,保留字符(即关键字:如print ...
- Spring-内置Resouce
Spring 内置Resouce Resource: org.springframework.core.io.Resource; 内置方法 public interface Resource exte ...
- 服务器硬盘--SAS盘和SATA盘
一.SAS和SATA SATA: Serial Advanced Technology Attachment,又叫串口硬盘,是将主机总线适配器连接到硬盘的总线接口. SAS: Serial Attac ...
- 原生JS实现异步图片上传(预览)
效果 实现过程分为两步 1. 用户点击添加后通过 H5文件读取 FileReader对象以DataURL的格式读取图片 2. 通过FormData对象生成表单数据,通过ajax上传到后台 HTML & ...
- Java初学者应该注意的学习问题
作为初学者,在刚开始学习的时候,一定会走很多弯路.但其实很多弯路是不必走的,会浪费很多时间,导致学习效率大打折扣.今天小编给大家讲述一下,作为一个Java初学者,在开始学习的时候应该注意的问题,应该从 ...
- WPF 自定义控件缩放
方式一: 自定义控件使用固定大小绘制:控件内的各个子控件大小设定固定值 优点:控件绘制简单.快捷. 缺点:使用时如需缩放,需在自定义控件的外面加一个 ViewBox . 使用示例如下(将 UserCo ...
- linux脚本启动应用
手动输入一些命令,启动任务会很麻烦.可以写个start.sh脚本,去执行. #!bin/sh pid=`ps -ef|grep -v grep|grep ****-1.0-SNAPSHOT.jar|a ...