这题应该注意到与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仪仗队的更多相关文章

  1. BZOJ 2190: [SDOI2008]仪仗队

    2190: [SDOI2008]仪仗队 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 2689  Solved: 1713[Submit][Statu ...

  2. [SDOI2008]仪仗队

    P2158 [SDOI2008]仪仗队 题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线 ...

  3. BZOJ 2190: [SDOI2008]仪仗队( 欧拉函数 )

    假设C君为(0, 0), 则右上方为(n - 1, n - 1). 一个点(x, y) 能被看到的前提是gcd(x, y) = 1, 所以 answer = ∑ phi(i) * 2 + 2 - 1 ...

  4. P2158 [SDOI2008]仪仗队

    P2158 [SDOI2008]仪仗队图是关于y=x对称的,横纵坐标一定是互质的否则在之前就被扫过了,所以就可以用欧拉函数再*2就完了. #include<iostream> #inclu ...

  5. 洛谷 P2158 [SDOI2008]仪仗队 解题报告

    P2158 [SDOI2008]仪仗队 题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线 ...

  6. P2158/bzoj2190 [SDOI2008]仪仗队

    P2158 [SDOI2008]仪仗队 欧拉函数 计算下三角的点数再*2+1 观察斜率,自行体会 #include<iostream> #include<cstdio> #in ...

  7. P2158 [SDOI2008]仪仗队 && 欧拉函数

    P2158 [SDOI2008]仪仗队 题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线 ...

  8. [LuoguP2158][SDOI2008]仪仗队

    [LuoguP2158][SDOI2008]仪仗队(Link) 现在你有一个\(N \times N\)的矩阵,求你站在\((1,1)\)点能看到的点的总数. 很简洁的题面. 这道题看起来很难,但是稍 ...

  9. [SDOI2008]仪仗队 (洛谷P2158)

    洛谷题目链接:[SDOI2008]仪仗队 题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视 ...

  10. bzoj 2190: [SDOI2008]仪仗队 线性欧拉函数

    2190: [SDOI2008]仪仗队 Time Limit: 10 Sec  Memory Limit: 259 MB[Submit][Status][Discuss] Description 作为 ...

随机推荐

  1. Delphi Idhttp Post提交 Aspx/Asp.net 时 500错误的解决办法。

    一直使用Delphi写程序,因为习惯了,用起来方便. 但是有一个问题困扰了我半年了.就是使用Idhttp Post提交时候总会有莫名其妙的错误,大部分网站没问题,但是一遇到Asp.net就报错500. ...

  2. IEEE 754 浮点数的四种舍入方式

    四种舍入方向: 向最接近的可表示的值:当有两个最接近的可表示的值时首选"偶数"值:向负无穷大(向下):向正无穷大(向上)以及向0(截断). 说明:默认模式是最近舍入(Round t ...

  3. Beaglebone Back学习五(PWM测试)

    PWM测试 参考链接 1 Enable PWM on BeagleBone with Device Tree overlays 2Using PWM on the Beaglebone Black 3 ...

  4. Beaglebone Back学习一(开发板介绍)

    随着开源软件的盛行.成熟,开源硬件也迎来了春天,先有Arduino,后有Raspherry Pi,到当前的Beaglebone .相信在不久的将来,开源项目将越来越多,越来越走向成熟.         ...

  5. Fedora 命令

    1. 更新包 yum clear all yum -y update 2.yum包查找 yum whatprovides xxxx.os.l 3 df 查看磁盘空间 xclip 复制到粘贴板 xcli ...

  6. 用JS给浏览器的关闭按钮添加事件

    以下是指在js中实现,而非 <body onunload="close()"> 这种方法! 因为这样是在unload掉body的时候触发,而无论任何浏览器,都会在关闭的 ...

  7. ofbiz进阶之实体引擎配置文件

    The Open For Business Project: Entity Engine Configuration Guide 原文链接:http://ofbiz.apache.org/docs/e ...

  8. ISoft(开源)专用下载器

    继 两年的坚持,最后还是决定将ISoft开源 之后,今天再共享一款ISoft专用下载器小工具.这款工具是一年前开发的,也是一直闲置着没去扩展更新.当时开发出来就是仿穿越火线专用下载器的样式来做的,现在 ...

  9. 【BZOJ 1412】[ZJOI2009]狼和羊的故事

    Description “狼爱上羊啊爱的疯狂,谁让他们真爱了一场:狼爱上羊啊并不荒唐,他们说有爱就有方向......” Orez听到这首歌,心想:狼和羊如此和谐,为什么不尝试羊狼合养呢?说干就干! O ...

  10. python学习笔记1(语法)

    语法 从"Hello,world"开始看吧,我们学的很多语言都是从helloworld开始的. >>> 1 + 1 2 >>> print 'H ...