SDOI2008仪仗队
这题应该注意到与b2818的不同
一个点能被看见当且仅当它与(1,1)的横纵坐标的距离gcd为1
所以问题转化为x,y<=n-1,求gcd(x,y)=1的方案数
最后要加上2
代码:
var i,n,tot:longint;
ans:int64;
phi:array[..] of int64;
p:array[..] of longint;
procedure get;
var i,j:longint;
begin
fillchar(phi,sizeof(phi),);
tot:=;
phi[]:=;
for i:= to n do
if phi[i]= then
begin
phi[i]:=i-;inc(tot);p[tot]:=i;
j:=i+i;
while j<=n do
begin
if phi[j]= then phi[j]:=j;
phi[j]:=(phi[j] div i)*(i-);
inc(j,i);
end;
end;
end;
procedure main;
begin
readln(n);dec(n);
get;
for i:= to n do inc(phi[i],phi[i-]);
writeln(*phi[n]+);
end;
begin
main;
end.
学了一种新的求欧拉函数的筛法——欧拉筛法
代码:
var i,n,tot:longint;
ans:int64;
fai:array[..] of int64;
p:array[..] of longint;
check:array[..] of boolean;
procedure getfai;
var i,j,k:longint;
begin
tot:=;
fillchar(check,sizeof(check),false);
for i:= to n do
begin
if not(check[i]) then
begin
inc(tot);
p[tot]:=i;
fai[i]:=i-;
end;
for j:= to tot do
begin
k:=i*p[j];
if k>n then break;
check[k]:=true;
if i mod p[j]= then
begin
fai[k]:=fai[i]*p[j];
break;
end
else
fai[k]:=fai[i]*(p[j]-);
end;
end;
end;
procedure main;
begin
readln(n);dec(n);
getfai;
for i:= to n do inc(fai[i],fai[i-]);
writeln(*fai[n]+);
end;
begin
main;
end.
又作了一个小优化,缩小了空间使用,去掉check数组,直接用fai是否为0来判断是否是质数
代码:
var i,n,tot:longint;
ans:int64;
fai:array[..] of int64;
p:array[..] of longint;
procedure getfai;
var i,j,k:longint;
begin
tot:=;
fillchar(fai,sizeof(fai),);
for i:= to n do
begin
if fai[i]= then
begin
inc(tot);
p[tot]:=i;
fai[i]:=i-;
end;
for j:= to tot do
begin
k:=i*p[j];
if k>n then break;
if i mod p[j]= then
begin
fai[k]:=fai[i]*p[j];
break;
end
else
fai[k]:=fai[i]*(p[j]-);
end;
end;
end;
procedure main;
begin
readln(n);dec(n);
getfai;
for i:= to n do inc(fai[i],fai[i-]);
writeln(*fai[n]+);
end;
begin
main;
end.
SDOI2008仪仗队的更多相关文章
- BZOJ 2190: [SDOI2008]仪仗队
2190: [SDOI2008]仪仗队 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 2689 Solved: 1713[Submit][Statu ...
- [SDOI2008]仪仗队
P2158 [SDOI2008]仪仗队 题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线 ...
- BZOJ 2190: [SDOI2008]仪仗队( 欧拉函数 )
假设C君为(0, 0), 则右上方为(n - 1, n - 1). 一个点(x, y) 能被看到的前提是gcd(x, y) = 1, 所以 answer = ∑ phi(i) * 2 + 2 - 1 ...
- P2158 [SDOI2008]仪仗队
P2158 [SDOI2008]仪仗队图是关于y=x对称的,横纵坐标一定是互质的否则在之前就被扫过了,所以就可以用欧拉函数再*2就完了. #include<iostream> #inclu ...
- 洛谷 P2158 [SDOI2008]仪仗队 解题报告
P2158 [SDOI2008]仪仗队 题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线 ...
- P2158/bzoj2190 [SDOI2008]仪仗队
P2158 [SDOI2008]仪仗队 欧拉函数 计算下三角的点数再*2+1 观察斜率,自行体会 #include<iostream> #include<cstdio> #in ...
- P2158 [SDOI2008]仪仗队 && 欧拉函数
P2158 [SDOI2008]仪仗队 题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线 ...
- [LuoguP2158][SDOI2008]仪仗队
[LuoguP2158][SDOI2008]仪仗队(Link) 现在你有一个\(N \times N\)的矩阵,求你站在\((1,1)\)点能看到的点的总数. 很简洁的题面. 这道题看起来很难,但是稍 ...
- [SDOI2008]仪仗队 (洛谷P2158)
洛谷题目链接:[SDOI2008]仪仗队 题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视 ...
- bzoj 2190: [SDOI2008]仪仗队 线性欧拉函数
2190: [SDOI2008]仪仗队 Time Limit: 10 Sec Memory Limit: 259 MB[Submit][Status][Discuss] Description 作为 ...
随机推荐
- Spark小课堂Week7 从Spark中一个例子看面向对象设计
Spark小课堂Week7 从Spark中一个例子看面向对象设计 今天我们讨论了个问题,来设计一个Spark中的常用功能. 功能描述:数据源是一切处理的源头,这次要实现下加载数据源的方法load() ...
- WPF中禁止WebBrowser控件打开新窗口
一.针对纯WPF的WebBrowser控件: <summary> Suppress Script Errors In WPF WebBrowser </summary> pub ...
- 1 server - n clients 模型实现(select)
拓扑结构: 各个客户端创建读写管道,通过“上下线信息管道”向服务器发送上下线信息和读写管道名称.服务器接受信息,修改链表(存储客户端信息).客户端.服务器打开读写管道,服务器通过“W”管道接收从客户端 ...
- 1027 Colors in Mars (20)
#include <stdio.h> #include <map> using namespace std; int main() { int R,G,B,i; map< ...
- 简易记事本(演示java文件io)
演示效果: 打开txt文件 输入文字,保存 选择保存地址 生成文件 源代码: package io; import java.io.*; import java.awt.*; import ja ...
- 详解Javascript中的Array对象
基础介绍 创建数组 和Object对象一样,创建Array也有2种方式:构造函数.字面量法. 构造函数创建 使用构造函数的方式可以通过new关键字来声明,如下所示: 12 var arr = new ...
- Mysql数据库备份和还原常用的命令
Mysql数据库备份和还原常用的命令是进行Mysql数据库备份和还原的关键,没有命令,什么都无从做起,更谈不上什么备份还原,只有给系统这个命令,让它去执行,才能完成Mysql数据库备份和还原的操作,下 ...
- Mysql 配置主从服务自动同步功能
1.修改主服务器master: #vi /etc/my.cnf [mysqld] log-bin=mysql-bin //[必须]启用二进制日志 serve ...
- IOS设备滑动事件
只要手指触摸屏幕,滑动,从屏幕离开,系统都会产生UIEvent对象类型的事件---当然包括UITouch事件 – touchesBegan:withEvent: 当用户触摸到屏幕时调用方法 – t ...
- Controlling Site Provisioning Process with a Custom Provider
http://www.cnblogs.com/frankzye/archive/2010/09/07/1820346.html http://sujoysharepoint2010.blogspot. ...