spoj 4491. Primes in GCD Table 莫比乌斯反演

弘玑RPA进阶攻略 01.弘玑RPA产品概要。02.设计器的安装与卸载。03.设计器特性与使用。 阅读详情

http://www.spoj.com/problems/PGCD/

题意: 给出 a ,b  (1<=a,b <=10^7) ,求 gcd(x,y) =prime 的 方案数,   其中 1=<x<=a ,  1<=x<=b 。

如果gcd(x ,y) = 1; 这个问题比较好求。

g(n) 为  gcd(x ,y) = n 的方案数。

f( n )  为  gcd(x ,y) = b ,其中 n|b 的所有方案数

f( a ) =  sigma( g( b ))   条件  a|b;


g( n ) = sigma( u(b)* f(b) )   n|b

u(b) =1   ,   b  是 Square-free Number 且 b是偶数个素因子的积

u(b) = 0      b  是 Square-free Number 且 b是寄数个素因子的积

 u(b) = -1   b  是 不是  Square-free Number


f( n ) = a/n * b/n

g( n ) =  sigma(  u(t/n )*a/t* b/t);

ans  =  sigma( g( d )) ,d 是素数

ans = sigma{  u[ j ]* a/( d* j)* b/( d *j ) }   d 是素数。

对于  x=p1^k1 * p2^k2 * p3^k3 ... 其中pi为素数。

当所有 ki全为1。那么从里面拿出一个素数d,会剩下一个Square-Free-Number。

1设x有t个素因子。取出一个后(其实就是   对于(a,b) 中, gcd(n)=  取值范围(a / n, b/ n) 中的gcd( 1)  )而取法有t种于是ans+= ( ((t-1)&1)?-1:1 ) * t * (m/x) * (n/x)


2 当ki有一个是2,其它全是1 时, 所取的值只能是 ki等于2 的那个数,其余的都不会构成 square-free Number 。 所以取法仅一种。

那么显然 ans+=( (t&1)?-1:1 )*(m/x)*(n/x)

3 对于有多个2 的 x  不用考虑, 无论取那个都不是 square-free Number。


解法 对 u 进行打表, 求解过程中 分块求求值。

打表过程比较慢  程序 45s  。。  不解,本地跑得挺快的。。

#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <cstring>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
 
#include <cstdlib>
#include <ctime>
#include <assert.h>
#include <queue>
#define REP(i,n) for(int i=0;i<n;i++)
#define TR(i,x) for(typeof(x.begin()) i=x.begin();i!=x.end();i++)
#define ALLL(x) x.begin(),x.end()
#define SORT(x) sort(ALLL(x))
#define CLEAR(x) memset(x,0,sizeof(x))
#define FILLL(x,c) memset(x,c,sizeof(x))
using namespace std;
 
const double EPS = 1e-8;
 
#define LL long long 
#define pb push_back
const int maxn = 10000001;
int f[maxn];
int sum[maxn];
int two[maxn];
void init(){
    for(int i =1 ;i<maxn;i++){
        f[i] = 0;
        two[i]=0;
    }
    for(int i=2;i<maxn;i++){
        if(!f[i]){
             for(int j = i;j<maxn;j+=i){
                    f[j] = i;
             }            
        }
    }
    for(int i=2;i<maxn;i++){
            if(f[i] ==0){
                f[i] =1;
            }else{
                int j = i/f[i];
                if(j%f[i] ==0){
                    two[i] = two[j]+1;
                }else{
                    two[i] = two[j];
                }
                f[i] = f[j]+1;
            }    
    }
    for(int i=2;i<=maxn;i++){
        if(two[i] == 1){
                if(f[i]&1){
                    f[i] =1;
                }else{
                    f[i] = -1;
                }
        }else if(two[i] == 0){
            
            if((f[i])&1){
            
            }else{
                f[i] = -f[i];    
            }
        }else{
            f[i] = 0;
        }
    }
    sum[0]= 0;
    sum[1] = 0;
    for(int i=2;i<maxn;i++){
        sum[i] = sum[i-1] + f[i];
    }
}
int a,b, c;
LL ans;
void gcd(int a,int b){
    int k = min(a,b);
    for(int i = k , j ; i > 1 ; i = j ){
        LL ta = a/i, tb = b/i;
        j =max(a/ (ta+1) , b /(tb+1));
        ans += (LL)ta*tb*(sum[i] - sum[j]);
        // cout << ta<<" "<<tb<< " "<<sum[i] - sum[j]<<endl;
  }
}
 
int main(){
    init();
    int t ;
    cin>>t;
    while(t--){
    
        scanf("%d%d",&a,&b);
        ans = 0;
        gcd(a,b);
        printf("%lld\n",ans);
    }
    return 0;
}






RFC 字符码转换深度解析:Unicode、非 Unicode 与 MDMP 系统的协奏 老版本 MDMP 系统不上传自定义映射时,Unicode 端会落回“预配置列表”。列表里可见西欧 1100、日文 8000、中文 8400 等经典编号。若需强制覆写映射,可在 SM59 ➡Unicode页签启用,或直接勾选作为兜底。字符编码问题常“潜伏”多年,一旦旧系统升级或新增语种便集中爆发。掌握 RFC code page 转换机理、灵活运用 SM59 选项、在早期对 LANG 字段和字段长度进行治理,是根治乱码与 short dump 的关键。 阅读详情

相关推荐

【STM32项目】老人健康跌倒检测系统实现(附教程PCB资料)

功能概述 跌倒检测 倾倒告警,人体角度倾斜至阈值触发蜂鸣报警 异常运动,加速度超过正常行动阈值时触发报警 心率监测 实时检测心率数据 血氧监测 实时检测采集血氧 血压测量 血压在线测量 红外体温 非接触体温采集方案 接触式体温采集方案 实时定位 中科微GPSGT-U12双频GPS北斗 GLONASS IRNSS定位系统 NEMA数据解析 可扩展高精度定位方案厘米级 屏幕显示 数据采集显示 告警阈值设置 语音提示 1欢迎使用老人智慧监测系统

洋洋的博客 1万+

SPOJ PGCD - Primes in GCD Table (莫比乌斯)

//题意:给定两个数和,其中,,求为质数的有多少对?其中和的范      围是。 //方法:莫比乌斯反演 #include #include #include using namespace std; const int maxn = 1e7 + 5; int isprime[maxn]; int p[maxn]; int u[maxn]; int g[maxn]; int s

Below_Crusder的博客 569

玩转openclaw+企业微信

OpenClaw横空出世:AI从问答到执行的范式革命 OpenClaw作为2026年AI领域的重大突破,实现了从对话机器人到智能执行体的进化。其核心价值在于"自主执行"而非简单交互,通过六层解耦架构(表现层、网关层、运行时层、技能层、工具层、记忆层)构建完整执行闭环。关键技术包括Model Context Protocol实现多模型兼容,以及事件驱动架构确保实时响应。安装过程支持多平台,通过Node.js环境即可快速部署,并支持对接主流大模型。OpenClaw标志着AI开始真正&quot

西木风落 1591

spoj PGCD - Primes in GCD Table

文章目录题目链接: 题目链接: https://www.spoj.com/problems/PGCD/ 原来spoj知道题号不行啊。。要知道题的名字才行。。。然后改掉网址后面的题号就阔以了。。。 题意:就是求gcd(x,y)=质数 的个数 做过莫比乌斯的模板的就很清楚,不就是求f(2)+f(3)+f(5)+…+f§么?如果真是这样,那就是一道模板题,就没有什么意思了,果然,暴力这样求T掉了,嗯~不...

帅气廖鹏飞 321

Oracle19c安装,基本配置教程(超详细)

安装有出错的风险,卸载也是比较麻烦的,所以先提前设置一个还原点,在windows中的步骤如下,如果对自己有信心,可以直接跳过该部分开始安装oracle在设置中进入创建还原点的界面开始创建还原点上面已经成功创建了还原点,如果安装oracle时出现问题,自己也无法解决,恢复到安装之前即可,恢复步骤如下经过上面的步骤,Oracle我们就能够正常使用了,我们就使用自己在sql plus里面创建的账号即可,创建的表会默认存放在我们自己创建的表空间里面。

秃头披风侠的博客 7万+

营销反作弊之 异常行为分析模型(一),附带python代码

通过对用户行为进行深入的分析,识别出与常规模式不符的异常行为,可以有效检测并阻止虚假广告点击、刷单、点击欺诈等欺诈行为。本文将详细探讨营销反欺诈中异常行为分析的方法,介绍如何通过数据采集、清洗、行为建模与异常检测,准确识别潜在的欺诈行为,并提供 Python 实现代码示例。**监督学习 (Supervised Learning):**在标注数据的帮助下,训练机器学习模型使其能预测未知数据的结果。营销反欺诈异常行为分析的整体流程涉及多个环节,确保通过对用户行为的深入分析,及时识别潜在的欺诈行为。

viviwiky的博客 1230

【莫比乌斯反演】[SPOJ-PGCD]Primes in GCD Table

题目 大意:给出一个数N,M,求1 <= x <= N,1 <= y <= M,且gcd(x, y)为素数的数对x, y的数量。 分析:如果枚举每一个质数(以下公式看一下【莫比乌斯反演】[HYSBZ/BZOJ2301]Problem b这篇blog)ans=∑pmin(n,m)f(p)=∑pmin(n,m)∑k=1min(n,m)μ(k)F(pk)=...

weixin_30419799的博客 159

Selenium自动化测试遇到shadow-root元素?3种实用解决方案帮你搞定

本文针对Selenium自动化测试中遇到shadow-root元素难以定位的常见问题,提供了三种实用的解决方案。详细阐述了通过JavaScript直接穿透Shadow DOM、利用浏览器工具快速获取JS Path以及使用Python第三方库进行优雅封装的方法,并分享了提升脚本健壮性的实战策略与最佳实践,帮助测试人员有效应对现代Web组件化开发带来的挑战。

code8的博客 408

SPOJ PGCD - Primes in GCD Table (好题! 莫比乌斯反演+分块求和优化)

SPOJ PGCD - Primes in GCD Table (好题! 莫比乌斯反演+分块求和优化)

Tc的专栏 2108

摩尔线程GPU实战:5分钟搞定AI模型部署(含Docker避坑指南)

本文详细介绍了摩尔线程GPU在AI模型部署中的实战应用,包括环境配置、Docker避坑指南及性能优化技巧。通过5分钟快速部署指南,帮助开发者高效利用摩尔线程GPU进行AI模型推理,特别针对常见兼容性问题提供解决方案,显著提升部署效率。

weixin_28736335的博客 454

电源防反接保护电路全攻略实战A04

本文深入剖析了硬件设计中电源保护电路的关键技术与实战经验。文章指出,保护电路虽小但至关重要,通过对比分析二极管与MOSFET防反接方案,揭示了MOSFET在效率、温控方面的优势。针对过压保护,重点讲解了TVS二极管选型要点,强调钳位电压而非击穿电压才是保护核心。文章结合工业案例(如48V通信模块烧毁、5V系统MOSFET过热等),详细阐述了PCB布局规范、热设计路径等工程细节,并提供了USB接口ESD防护的完整选型方案。最后强调硬件设计必须考虑最坏工况,在成本与性能间找到平衡点,避免因小失大。

启芯硬件的博客 777

SPOJ - PGCD Primes in GCD Table 莫比乌斯+分块

题目:x属于区间[1,a],y属于区间[1,b],问gcd(x,y)为质数的有多少个。(2,4) (4,2)算2个 思路:直接莫比乌斯+分块 代码: #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #include #in

ACVevtor的博客 359

STM32实战开发(133):基于STM32的智能GPS定位跟踪系统开发

本文详细介绍了如何基于STM32开发一个智能GPS定位跟踪系统。系统使用NEO-6M GPS模块获取实时定位数据,并通过SIM800L GPRS模块将定位信息上传到远程服务器。通过OLED屏幕实时显示位置数据,使用SD卡存储历史轨迹,并提供蜂鸣器报警功能。项目实现了GPS定位数据的获取、解析、存储和传输,为智能定位系统提供了完整的解决方案。

2201_76125393的博客 1643

SPOJ4491 Primes in GCD Table 莫比乌斯反演+分块+前缀和

Description Johnny has created a table which encodes the results of some operation -- a function of two arguments. But instead of a boring multiplication table of the sort you learn by heart at prep-

Megumin的博客 509

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

spoj 4491 PGCD - Primes in GCD Table (莫比乌斯反演)

题目链接:哆啦A梦传送门 题意:给出n,m,求∑i=1n∑j=1m[gcd(i,j)为素数]\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)为素数]∑i=1n​∑j=1m​[gcd(i,j)为素数] n,m&lt;=1e7n,m&lt;=1e7n,m<=1e7 依题意得: sum=∑p∈素数∑i=1n∑j=1mgcd(i,j)=p\begin{ali...

Jiandong 295

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

SPOJ 4491 Primes in GCD Table(莫比乌斯反演)

题意:求[1,m]和[1,n]中gcd为素数的数对数量。 思路:这道题和hdu 4746有点像  传送门:http://blog.csdn.net/u014664226/article/details/48495375 思路大致相同,处理出每一项的系数,然后求前缀和分段加速。 #include #include #include #include #include #include #in

GODSPEED 500

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

SPOJ 4491 PGCD - Primes in GCD Table(莫比乌斯反演)

Description 给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对 Input 第一行一个整数T 表述数据组数接下来T行,每行两个正整数,表示N, M (T<=10000,N,M<=10000000) Output T行,每行一个整数表示第i组数据的结果 Sample Input 2 10 10 100 100

ZSQ 626

SPOJ PGCD 4491. Primes in GCD Table && BZOJ 2820 YY的GCD (莫比乌斯反演)

4491. Primes in GCD Table Problem code: PGCD Johnny has created a table which encodes the results of some operation -- a function of two arguments. But instead of a boring multip...

weixin_34000916的博客 134

SPOJ 4491. Primes in GCD Table 【mobius反演】

莫比乌斯反演是化简数论问题的一大利器

量子流逝 1099

SPOJ-PGCD Primes in GCD Table (Mobius反演 好题)

题意: 给你a,b,求gcd(i, j) = k (k为素数)的个数,1 解题思路: Mobius反演有两种形式: 设 F(n) = sigma( f(d) ), 其中d | n (也就是n%d==0) 。则 f(n) = sigma( F(d)*mu(n/d) ) 设 F(d) = sigma( f(n) ),其中d | n 。则f(d) = sigma( F(n)*mu(n

JayYe的专栏 1964

【SPOJ PGCD】Primes in GCD Table——莫比乌斯反演2

PGCD - Primes in GCD TableJohnny has created a table which encodes the results of some operation – a function of two arguments. But instead of a boring multiplication table of the sort you learn by hea

绝尘 888

SPOJ4491. Primes in GCD Table(gcd(a,b)=d素数,(1<=a<=n,1<=b<=m))加强版

SPOJ4491. Primes in GCD Table   Problem code: PGCD   Johnny has created a table which encodes the results of some operation -- a function of two arguments. But instead of a boring mu

寻找&星空の孩子 1796

hdu 1130 How Many Trees?

此题 是 简单的 catalan 数的应用, 二叉树的表示方法 可以转换乘 卡特兰数中典型的括号合法种类数 的问题。 我的想法 是 如果 按树的深搜顺序 第一次经过一个点时 画 左括号 , 此节点的左节点便利完成后又回到这个点 这是 画 右括号,这样的话, 每一个树 都能唯一的对应一个合法括号序列, 每一个 合法的括号序列页唯一的对应一棵树。   这样的话 , 这个问题 就转化乘 最简单的 ca

OceanLight的专栏 1543

zoj 3688 The Review Plan II 组合数学

我的解法比较慢。 复杂度 O(nlgn) 有O( N )的解法  递推公式看不懂 此题是 有 禁位 的排列 。相当于在 n*n的棋盘中  设置了 2n 个 禁位。 有 k个在 这 2*n 个禁位中 的排列数  Pk。 这 2*n 个 禁位 可以看成  一个有 t =2*n 个点 形成的环中 ,选出k个不相邻的组合数。 可以通过 枚举圆上的 点 就将 圆拆分成了链。   先选取一

OceanLight的专栏 1337

uva 861 Little Bishops

问 在n*n 的国际象棋棋盘中 能放 k个象的方案数? 国际象棋中 白格 和 黑格 中的象不能互相攻击, 就可以 把这两部分拆开来看,分别统计 由于象是斜着攻击的,我们可以把棋盘旋转45 度,然后对 格子做 水平和竖直方向的交换(不会影响方案数)。 把白格子弄出来就是               *           *  *  *       *  *  *  *  *  

OceanLight的专栏 1276

zoj 3687 The Review Plan I

题意抽象出来就是 在  n*n 的 棋盘中 加了 m 个禁位, 放置 n 个棋子 ,每两个棋子不在同一行 同一列,问有多少中放置方式 ? trick  :     M 个禁位 中 有相同 坐标的点。 解法 : 利用 有禁位的排列的公式 (容斥原理):   n! - r1 *( n-1)! + r2*(n -2)! - r3*(n-3)! +.......... ri  指 在禁区中 选

OceanLight的专栏 1097
上一篇: uva 861 Little Bishops
下一篇: hdu 4335 What is N? 数论
OceanLight
博客等级 码龄14年 21粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值