我们发现对于一个点(x,y),与(0,0)连线上的点数是gcd(x,y)-1

那么这个点的答案就是2*gcd(x,y)-1,那么最后的答案就是所有点

的gcd值*2-n*m,那么问题转化成了求每个点的gcd值的Σ

也即:Σi<=n Σj<=m gcd(i,j)

那么首先我们知道Σphi(d) d|n=n,所以我们可以将这个式子转化成

Σi<=n Σj<=m Σ d|gcd(i,j) phi(d)

那么对于矩阵n*m来说,我们将phi(d)累加了floor(n/d)*floor(m/d)次

所以对于所有的d,答案就是Σ d<=min(n,m) floor(n/d)*floor(m/d)*phi(d)

我们可以线性筛出欧拉函数表,然后线性的求解。

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

最新文章

  1. HTML的两三事
  2. 配置nodejs环境
  3. Robot Framework 的安装和配置(转载)
  4. 自定义圆环progressbar
  5. TYVJ P1051 选课 Label:多叉转二叉&amp;&amp;树形dp(虐心♥)
  6. JavaScript如何判断参数为浮点型
  7. bzoj4557【JLOI2016】侦查守卫
  8. python进阶------进程线程(三)
  9. php无法连接mysql问题解决方法总结
  10. qt 免注册下载
  11. elastic-job详解(四):失效转移
  12. 分析“HTTP500内部服务器错误”解决方法
  13. typescript类(学习笔记非干货)
  14. mysqldump备份时保持数据一致性
  15. 关于如何在Python中使用静态、类或抽象方法的权威指南
  16. ASP.NET 构建高性能网站 第6篇
  17. VC dimension(Vapnik-Chervonenkis dimension)
  18. PostgreSQL的.NET驱动程序Npgsql中参数对象的一个Bug
  19. 使 WPF 支持触摸板的横向滚动
  20. C# LINQ学习笔记

热门文章

  1. 【HNOI2008】玩具装箱TOY &amp; 斜率优化学习笔记
  2. iOS URL加解密
  3. 每天一个Linux命令(14):dpkg命令
  4. HDU 4735 Little Wish~ lyrical step~(DLX搜索)(2013 ACM/ICPC Asia Regional Chengdu Online)
  5. c# 自动关机代码
  6. 一种保持顺序的Properties
  7. Java中WeakHashMap实现原理深究
  8. AndroidStudio3.0 注解报错Annotation processors must be explicitly declared now. The following dependencies on the compile classpath are found to contain annotation processor.
  9. Github &amp; DMCA Takedown Policy
  10. Hibernate关联映射之_一对多