P2257 YY的GCD

news/2024/7/7 23:34:15

\[\begin{aligned} & \sum^{n}_{i = 1} \sum^{m}_{j = 1} [ gcd(i, j) \in prime]\\ & \sum^{}_{k \in prime} \sum^{n}_{i = 1} \sum^{m}_{j = 1}[ gcd(i, j) = k]\\ \end{aligned} \]

\[\begin{aligned} f(s) & = \sum^{n}_{i = 1} \sum^{m}_{j = 1}[ gcd(i, j) = s]\\ g(s) & = \sum^{}_{s \mid k} f(k) \end{aligned} \]

\[\begin{aligned} & g(s) = [\dfrac{n}{s}][\dfrac{m}{s}]\\ & f(s) = \sum^{}_{s \mid k} \mu(\dfrac{k}{s})g(k)\\ & f(s) = \sum^{}_{s \mid k} \mu(\dfrac{k}{s})[\dfrac{n}{k}][\dfrac{m}{k}]\\ \end{aligned} \]

\[\begin{aligned} Ans = \sum^{}_{s \in prime} f(s) &= \sum^{}_{s \in prime} \sum^{}_{s \mid k} \mu(\dfrac{k}{s})g(k)\\ &= \sum^{}_{s \in prime} \sum^{[\dfrac{n}{s}]}_{k = 1} \mu(k)g(ks)\\ &= \sum^{}_{s \in prime} \sum^{[\dfrac{n}{s}]}_{k = 1} \mu(k)g(T)\\ &= \sum^{}_{k\in prime} \sum^{[\dfrac{n}{k}]}_{d = 1} \mu(d)[\dfrac{n}{T}][\dfrac{m}{T}](T = dk)\\ &= \sum^{}_{k\in prime} \sum^{n}_{T = 1} \mu (\dfrac{T}{k})[\dfrac{n}{T}][\dfrac{m}{T}](T = dk)\\ &= \sum^{n}_{T = 1} \sum^{}_{k \mid T, k\in prime} \mu (\dfrac{T}{k})[\dfrac{n}{T}][\dfrac{m}{T}](T = dk)\\ &=\sum^{n}_{T = 1} [\dfrac{n}{T}][\dfrac{m}{T}] \sum _{k \mid T, k \in prime} \mu(\dfrac{T}{k})(T = dk)\\ &=\sum^{n}_{T = 1} [\dfrac{n}{T}][\dfrac{m}{T}] e(T)(T = dk)\\ e(T) &=\sum _{k \mid T, k \in prime} \mu(\dfrac{T}{k}) \end{aligned} \]

枚举质数 \(k\) ,再枚举 \(k\) 的倍数 \(T\) , \(e(T) += \mu (\dfrac{T}{k})\),即可计算 \(e(T)\)

其中 \(n \le m\)

在套个数论分块就完了?

好难。。。

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <cstdio>
#include <ctime>
#include <cmath>
using namespace std;
typedef long long ll;
#define For(i, a, b) for(ll i = (a); i <= (b); i ++)
#define Rep(i, a, b) for(ll i = (a); i >= (b); i --)
const ll N = 1e7 + 11;
ll mu[N], vis[N];
ll e[N];
vector<ll> prime;
void Table(ll M){
    mu[1] = 1;
    For(i, 2, M){
        if(vis[i] == 0){
            vis[i] = i;
            prime.push_back(i);
            mu[i] = -1;
        }
        for(auto j:prime){
            if(j * i > M)break;
            vis[i * j] = j;
            if(i % j == 0){
                mu[i * j] = 0;
                break;
            }
            mu[i * j] = -mu[i];
        }
    }
    for(auto i:prime){
        for(ll j = 1; j * i <= M; j ++){
            e[i * j] += mu[j];
        }
    }
    for(ll i = 1; i <= M; i ++){
        e[i] += e[i - 1];
    }
    /*
    for(ll i = 1; i <= 20; i ++){
        prllf("%d %d\n", i, vis[i]);
    }
    */
    return;
}
void work(ll n, ll m){
    if(n > m)
        swap(n, m);
    ll Ans = 0, l = 1, r;
    for(; l <= n; l = r + 1){
        r=min(n/(n/l),m/(m/l));
        Ans += (e[r] - e[l - 1]) * (n / l) * (m / l);
    }
    printf("%d\n", Ans);
    return ;
}
ll Question;
int main(){
//    clock_t x = clock();
//    freopen("text.in", "r", stdin);
    Table(N - 10);
    scanf("%lld", &Question);
    while(Question --){
        ll n, m;
        scanf("%lld%lld", &n, &m);
        work(n, m);
    }
//    clock_t y = clock();
//    cout << y - x << endl;
    return 0;
}

http://lihuaxi.xjx100.cn/news/568843.html

相关文章

webdav服务/ddns/域名/ssl证书设置

1.webdav服务 1.1.Windows iis自带的webdav组件 默认未启用,可以启用进行设置,使用了一下,在使用浏览器或Windows资源管理器内右键添加网络位置作为客户端时比较好用,但是当在移动端使用cx文件管理器app时,身份验证出现问题. 参考文章: 1.2. WebDAV Server (推荐) 项目地址:Git…

基于多保真方法来估计方差和全局敏感度指数分析(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 此代码实现了多保真方法来估计方差和全局敏感度指数。当模型具有不确定的输入时&#xff0c;模型输出也是不确定的。基于方差的…

网络爬虫入门到实战

简介 数据采集文章 开始 入门程序 环境准备 pip3 install beautifulsoup4 基本操作 from urllib.request import urlopen from bs4 import BeautifulSouphtml urlopen("http://www.baidu.com") # print(html.read()) (打印html完整内容) bsObj BeautifulSou…

【Vue2+Element ui通用后台】面包屑和tag功能

文章目录面包屑tag面包屑 Element ui 面包屑&#xff1a;显示当前页面的路径&#xff0c;快速返回之前的任意页面&#xff0c;完成效果如下&#xff1a; 我们之前把头部的代码封装到了 CommonHeader.vue 中&#xff0c;面包屑部分直接写死了一个首页&#xff0c;我们可以把官…

将powershell、cmd和vscode终端的编码永久修改成utf-8

powershell修改方法 1、以管理员身份打开powershe New-Item $PROFILE -ItemType File -Force 2、打开C盘&#xff0c;找到我的文档中的WindowsPowerShell文件夹 3、编辑这个ps1文件&#xff08;默认是空的&#xff09;&#xff0c;加上以下代码 $OutputEncoding [console…

JSP ssh 桌面网站系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 JSP ssh 桌面网站系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模 式开发。开发环境为TOMCAT7.0,My…

JavaScript刷LeetCode模板技巧篇(一)

虽然很多人都觉得前端算法弱&#xff0c;但其实 JavaScript 也可以刷题啊&#xff01;最近两个月断断续续刷完了 leetcode 前 200 的 middle hard &#xff0c;总结了一些刷题常用的模板代码。 常用函数 包括打印函数和一些数学函数。 const _max Math.max.bind(Math); co…

maven中的scope

provided: 编译运行时期&#xff0c;目标容器已经提供&#xff0c;打jar包时候不带optional&#xff0c;依赖传递test: 举例子junit&#xff0c;为什么Test在src的java蓝包的测试类的方法上面不能用&#xff1f;src的java绿包里的测试类的方法上可以用。 依赖传递&#xff1a;间…