首先我们知道,正方形内个是对称的,关于y=x对称,所以只需要算出来一半的人数

然后乘2+1就行了,+1是(1,1)这个点

开始我先想的递推

那么我们对于一半的三角形,一列一列的看,假设已经求好了第I-1列的,那么第I列加上

之后,不会影响前I-1列能看见的人,那么第I列一共加上I个人,设坐标是(I,Y),

我们可以发现如果gcd(I,Y)<>1的时候这个点是看不见的,因为横纵坐标存在约数,也就是

前面有一个整点点和这个点还有原点在同一直线上(三角形相似),那么我们要找第I列I,Y互质的

点,也就是和I互质的点的个数,也就是phi(i),那么就不用递推了,我们每个I都要累加phi,也就是

生成1-n-1的欧拉函数表就行了(n-1是因为(0,0)点算第1列,我就在这儿WA了一次。。。)

/**************************************************************
    Problem:
    User: BLADEVIL
    Language: Pascal
    Result: Accepted
    Time: ms
    Memory: kb
****************************************************************/
 
//By BLADEVIL
var
    i, j                        :longint;
    n                           :longint;
    phi, mindiv                 :array[..] of longint;
    prime                       :array[..] of longint;
    ans                         :int64;
     
begin
    read(n);
    for i:= to n do
    begin
        if mindiv[i]= then
        begin
            mindiv[i]:=i;
            inc(prime[]);
            prime[prime[]]:=i;
            phi[i]:=i-;
        end;
        for j:= to prime[] do
        begin
            if prime[j]*i>n then break;
            if i mod prime[j]<> then
                phi[i*prime[j]]:=phi[i]*(prime[j]-) else
                phi[i*prime[j]]:=phi[i]*prime[j];
            mindiv[prime[j]*i]:=prime[j];
            if i mod prime[j]= then break;
        end;
    end;
    phi[]:=;
    for i:= to n- do ans:=ans+phi[i];
    ans:=ans*+;
    writeln(ans);
end.

bzoj 2190 线性生成欧拉函数表的更多相关文章

  1. UVa 11426 - GCD - Extreme (II) 转化+筛法生成欧拉函数表

    <训练指南>p.125 设f[n] = gcd(1, n) + gcd(2, n) + …… + gcd(n - 1, n); 则所求答案为S[n] = f[2]+f[3]+……+f[n] ...

  2. 【欧拉函数表】POJ2478-Farey Sequence

    [题目大意] 求∑φ(i)(1<=i<=N). [思路] 欧拉函数具有如下的重要推论: 当b是素数时 性质①若b|a,有φ(ab)=φ(a)*b: 性质②若b不|a,有φ(ab)=φ(a) ...

  3. UVA - 11426 欧拉函数(欧拉函数表)

    题意: 给一个数 N ,求 N 范围内所有任意两个数的最大公约数的和. 思路: f 数组存的是第 n 项的 1~n-1 与 n 的gcd的和,sum数组存的是 f 数组的前缀和. sum[n]=f[1 ...

  4. bzoj 2190 仪仗队(欧拉函数)

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

  5. BZOJ 2190仪仗队【欧拉函数】

    问题的唯一难点就是如何表示队长能看到的人数?如果建系,队长所在的点为(0,0)分析几组数据就一目了然了,如果队长能看到的点为(m,n),那么gcd(m,n)=1即m n 互质或者是(0,1),(1,0 ...

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

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

  7. The Euler function(线性筛欧拉函数)

    /* 题意:(n)表示小于n与n互质的数有多少个,给你两个数a,b让你计算a+(a+1)+(a+2)+......+b; 初步思路:暴力搞一下,打表 #放弃:打了十几分钟没打完 #改进:欧拉函数:具体 ...

  8. [bzoj 2190][SDOI2008]仪仗队(线性筛欧拉函数)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2190 分析:就是要线性筛出欧拉函数... 直接贴代码了: memset(ans,,sizeof ...

  9. BZOJ 2190 仪仗队(线性筛欧拉函数)

    简化题意可知,实际上题目求得是gcd(i,j)=1(i,j<=n)的数对数目. 线性筛出n大小的欧拉表,求和*2+1即可.需要特判1. # include <cstdio> # in ...

随机推荐

  1. Qt 在控件上面绘图 label,pushbutton。。。。。

    最近有点时间,就研究研究Qt ,提升一下自己 我记得我在刚开始学习Qt 的时候,想要在一个控件上面绘制图形,那就要构建一个新类来调用该控件的绘图函数 今天看到了狗哥的学习博客,感觉自己好渺小啊,按照狗 ...

  2. 自动化测试--testNG

    该文章主要介绍 testNG(testing next generation,下一代测试技术)框架的使用. 1.首先安装testNG 2.安装完成后,创建maven项目,导入TESTNG和seleni ...

  3. Cassandra 数据库设计

    Cassandra 2.* CQL3.1 最近更新:2015-10-30 索引的设计 在Cassandra中经常会发现,索引不够用,不好用,各种不强大. 比如,我关注的人的需求uid + follow ...

  4. POJ 2135 Farm Tour(最小费用最大流)

    Description When FJ's friends visit him on the farm, he likes to show them around. His farm comprise ...

  5. 简单java采集程序一

    [目标任务]通过该网站采集全国的手机号码段至数据库表中 [完成过程] 1.初涉正则表达式,学会写简单的正则表达式 2.获取单个网页内容,学会java中基本的IO流 3.将获取数据插入mysql数据库表 ...

  6. pta数组作业

    7-2 设计思路:本题要求处理数据并输出最大值及其对应的最小下标,首先输入n,然后定义一个长度为n的数组用于存储数据,定义m=a[0],n=0,从a[1]开始与m进行比较,若某项大于m,就把该项的值赋 ...

  7. Linux建立FTP服务器

    http://blog.chinaunix.net/uid-20541719-id-1931116.html http://www.cnblogs.com/hnrainll/archive/2011/ ...

  8. RunKit & NPM

    RunKit + NPM Try any Node.js package right in your browser https://npm.runkit.com/segmentit

  9. Hibernate基本演示

    保存一个对象到数据库中 目录结构 hibernate.cfg.xml <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hi ...

  10. P2563 [AHOI2001]质数和分解

    题目描述 任何大于 1 的自然数 n 都可以写成若干个大于等于 2 且小于等于 n 的质数之和表达式(包括只有一个数构成的和表达式的情况),并且可能有不止一种质数和的形式.例如,9 的质数和表达式就有 ...