Hillan and the girl —— 莫比乌斯对两个累加的优化

2024-04-07 01:18

本文主要是介绍Hillan and the girl —— 莫比乌斯对两个累加的优化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Problem Description
“WTF! While everyone has his girl(gay) friend, I only have my keyboard!” Tired of watching others’ affair, Hillan burst into scream, which made him decide not to hold it back.
“All right, I am giving you a question. If you answer correctly, I will be your girl friend.” After listening to Hillan, Girl replied, “What is the value of ∑ni=1∑mj=1f(i,j), where f(i,j)=0 if gcd(i,j) is a square number and f(i,j)=1 if gcd(i,j) is not a square number(gcd(i,j) means the greatest common divisor of x and y)?”
But Hillan didn’t have enough Intelligence Quotient to give the right answer. So he turn to you for help.

Input
The first line contains an integer T(1≤T≤10,000)——The number of the test cases.
For each test case, the only line contains two integers n,m(1≤n,m≤10,000,000) with a white space separated.

Output
For each test case, the only line contains a integer that is the answer.

Sample Input
2
1 2333333
10 10

Sample Output
0
33

Hint

In the first test case, obviously f(i,j) f ( i , j ) always equals to 0, because i i always equals to 1 and gcd(i,j) is always a square number(always equals to 1).

这个有两个玩意,所以它构造出来就是
sqrt(k)=1nf(k)= ∑ s q r t ( k ) = 1 n f ( k ) = k|pg(p)(p<=N) ∑ k | p g ( p ) ( p <= N )
然后用莫比乌斯反演就可以得出我们要求的是
k=1sqrt(n) ∑ k = 1 s q r t ( n ) k|pμ(p/k)f(p) ∑ k | p μ ( p / k ) ∗ f ( p )
而f(p)是在n,m中gcd=p的倍数所有数量,那么就等于
k=1sqrt(n) ∑ k = 1 s q r t ( n ) k|pμ(p/k)(n/p)(m/p) ∑ k | p μ ( p / k ) ∗ ( n / p ) ∗ ( m / p )
因为 μ(p/k) μ ( p / k ) 我们是可以预处理出来的,所以需要变换一下式子
p=1n(n/p)(m/p) ∑ p = 1 n ( n / p ) ∗ ( m / p ) k|pμ(p/k) ∑ k | p μ ( p / k )
n/p和m/p可以通过整数分块加速

#include<bits/stdc++.h>
using namespace std;
#define eps 1e-6
#define ll long long
int n,m;
const int maxn=1e7+5;
int nprime[maxn],prime[maxn],cnt,mu[maxn],sum[maxn];
void init()
{cnt=0;mu[1]=1;for(int i=2;i<maxn;i++){if(!nprime[i]){prime[++cnt]=i;mu[i]=-1;}for(int j=1;j<=cnt&&prime[j]*i<maxn;j++){nprime[prime[j]*i]=1;if(i%prime[j]==0){mu[i*prime[j]]=0;break;}mu[i*prime[j]]=-mu[i];}}for(int i=1;i<=sqrt(maxn)+eps;i++)for(int j=i*i;j<maxn;j+=i*i)sum[j]+=mu[j/i/i];for(int i=2;i<maxn;i++)sum[i]+=sum[i-1];
}
int main()
{int t;scanf("%d",&t);init();while(t--){scanf("%d%d",&n,&m);ll ans=0;int ne;if(n>m)swap(n,m);for(int i=1;i<=n;i=ne+1){int l=n/i,r=m/i;ne=min(n/l,m/r);ans+=(ll)(sum[ne]-sum[i-1])*l*r;}printf("%lld\n",(ll)n*m-ans);}return 0;
}

这篇关于Hillan and the girl —— 莫比乌斯对两个累加的优化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/881302

相关文章

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

小白也能轻松上手! 路由器设置优化指南

《小白也能轻松上手!路由器设置优化指南》在日常生活中,我们常常会遇到WiFi网速慢的问题,这主要受到三个方面的影响,首要原因是WiFi产品的配置优化不合理,其次是硬件性能的不足,以及宽带线路本身的质... 在数字化时代,网络已成为生活必需品,追剧、游戏、办公、学习都离不开稳定高速的网络。但很多人面对新路由器

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

SpringBoot中HTTP连接池的配置与优化

《SpringBoot中HTTP连接池的配置与优化》这篇文章主要为大家详细介绍了SpringBoot中HTTP连接池的配置与优化的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、HTTP连接池的核心价值二、Spring Boot集成方案方案1:Apache HttpCl

PyTorch高级特性与性能优化方式

《PyTorch高级特性与性能优化方式》:本文主要介绍PyTorch高级特性与性能优化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、自动化机制1.自动微分机制2.动态计算图二、性能优化1.内存管理2.GPU加速3.多GPU训练三、分布式训练1.分布式数据

MySQL中like模糊查询的优化方案

《MySQL中like模糊查询的优化方案》在MySQL中,like模糊查询是一种常用的查询方式,但在某些情况下可能会导致性能问题,本文将介绍八种优化MySQL中like模糊查询的方法,需要的朋友可以参... 目录1. 避免以通配符开头的查询2. 使用全文索引(Full-text Index)3. 使用前缀索

C#实现高性能Excel百万数据导出优化实战指南

《C#实现高性能Excel百万数据导出优化实战指南》在日常工作中,Excel数据导出是一个常见的需求,然而,当数据量较大时,性能和内存问题往往会成为限制导出效率的瓶颈,下面我们看看C#如何结合EPPl... 目录一、技术方案核心对比二、各方案选型建议三、性能对比数据四、核心代码实现1. MiniExcel