[SDOI2008]仪仗队

Description

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

Input

  共一个数N。

Output

  共一个数,即C君应看到的学生人数。

Sample Input

  4

Sample Output

  9

HINT

【数据规模和约定】   对于 100% 的数据,1 ≤ N ≤ 40000

分析:

平面直角坐标系上的线段(且两端点为整点),其包含的整点(不包括两端点)数为gcd(|x1-x2|,|y1-y2|)-1,其中当重合时要特判。

知道上面这个这题就好做了,对于这一题,我们先要求得符合gcd(x-1,y-1) 1<=x,y<=n 的点对的个数,

产生欧拉函数表,将1~n-1的欧拉函数值加起来再乘2,相当于知道了所有2<=x,y<=n区间中能看到的点个数,然而别忘了x=1,y=1时各能看到一个点,也就是竖直方向一个,横轴方向一个,所以结果要加2,但由于统计euler表值时会将(2,2)的点对重复计算(e[1]=1,乘2后相当于多加了一次),故要减1

代码:

program asdf;
var
e:array[..]of int64;
n,i:longint; ans:int64;
procedure work;
var i,j:longint;
begin
for i:= to n do e[i]:=i;
for i:= to n do
if e[i]=i then
begin j:=i;
while j<=n do begin e[j]:=e[j] div i*(i-); inc(j,i); end;
end;
end;
begin
readln(n);
work;
for i:= to n- do inc(ans,e[i]);
writeln(ans*+);
end.

最新文章

  1. 《HelloGitHub月刊》第06期
  2. Struts2 Action中的方法命名不要以get开头
  3. apache磁盘缓存配置
  4. MVC与WebForm的一些区别
  5. oracle数据库创建表空间和表临时空间
  6. Redhat Enterprise Linux 6.4图形界面的中文问题
  7. BZOJ 1022 小约翰的游戏 (Anti-Nim游戏)
  8. VM虚拟机安装centos,同网段,局域网能访问
  9. UESTC 1599 wtmsb【优先队列+排序】
  10. SAP BAPI创建批次 为保存内部对象号
  11. mongoDB 其他数据类型
  12. Spring重要知识点整理
  13. 开源医学图像处理平台NiftyNet介绍
  14. Docker命令详解(build篇)
  15. pygame经典sprite精灵类
  16. servlet配置及其生命周期
  17. 代码 | 自适应大邻域搜索系列之(4) - Solution定义和管理的代码实现解析
  18. 修改多渠道打包的App名
  19. Linux实战教学笔记46:NoSQL数据库之redis持久化存储 (二)
  20. python基础之递归,匿名,内置函数

热门文章

  1. Codeforces Round #327 590B Chip &#39;n Dale Rescue Rangers(等效转换,二分)
  2. tensorflow构建CNN模型时的常用接口函数
  3. 安装Ubuntu桌面环境后只能Guest登录的解决办法
  4. 谷歌SwitchySharp &amp;&amp; SwitchyOmega插件
  5. XGBoost算法原理小结
  6. ipynb--&gt;pdf
  7. 自己写一个Promise
  8. SummerVocation_Learning--java的String 类
  9. 安装配置mysql图文步骤以及配置mysql的环境变量的步骤
  10. tp3.2读取time()格式遇到的的问题(尚未解决)