和GCD相关的“个数”及“求和”问题——hdu 2588、nyist 1007

2024-03-27 22:48

本文主要是介绍和GCD相关的“个数”及“求和”问题——hdu 2588、nyist 1007,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

hdu 2588 GCD

http://acm.hdu.edu.cn/showproblem.php?pid=2588
大意:
Given integers N and M, how many integer X satisfies 1<=X<=N and (X,N)>=M.
分析:已知(a,b)=k  --> (a/k, b/k)=1
所以,问题即是求解有多少个x,满足 (n/k, x/k)=1 且k>=m, 1<=x<=n
那么,需要枚举公约数k,然后欧拉函数。

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
const int N=1e5+10;
int prim[N],cnt;
bool vis[N];
void getpri(){for(int i=2;i<N;i++){if(!vis[i]) prim[cnt++]=i;for(int j=0;j<cnt&&prim[j]*i<N;j++){vis[prim[j]*i]=1;if(i%prim[j]==0) break;}}
}
int Euler(int a){if(a==1) return 1;int ans=a;for(int i=0;i<cnt&&prim[i]<=a;i++){if(a%prim[i]==0) {ans=ans-ans/prim[i];while(a%prim[i]==0) a/=prim[i];}}if(a>1) ans=ans-ans/a;return ans;
}
int main()
{getpri();int t;int n,m;cin>>t;while(t--){scanf("%d%d",&n,&m);int len=(int)sqrt(n);int ans=0;for(int i=1;i<=len;i++){if(n%i==0){if(i>=m){ans=ans+Euler(n/i);}if(n/i!=i && n/i>=m){ans=ans+Euler(i);}//cout<<i<<": "<<ans<<endl;}}printf("%d\n",ans);}return 0;
}

nyist 1007 GCD

http://acm.nyist.net/JudgeOnline/problem.php?pid=1007
大意:和hdu 2588 差不多,不过需要求解x的和,而非个数

分析:看这样一个子问题,n=24, k=2, 那么x可以等于
2 , 10 ,14 , 22
x全部除以2,即成 
1 , 5 , 7 , 11
这刚好是n/k=24/2=12的欧拉函数的成员
他们的和等于多少呢?
 1+11=12
 5+7=12
12*2=24
也即
将这个2推广成公式,即
所以,和n的最大公约数是k的x的和等于
检测了一下,1——1e6内欧拉函数是奇数的只有1和2
用此公式可以解决n/k=2的情况,但是n=k的情况需要特殊处理。

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
const int N=1e5+10,mod=1000000007;
typedef long long LL;
int prim[N],cnt;
bool vis[N];void getpri(){cnt=0;for(int i=2;i<N;i++){if(!vis[i]) prim[cnt++]=i;for(int j=0;j<cnt&&prim[j]*i<N;j++){vis[prim[j]*i]=1;if(i%prim[j]==0) break;}}
}int Euler(int a){if(a==1) return 1;int ans=a;for(int i=0;i<cnt&&prim[i]<=a;i++){if(a%prim[i]==0) {ans=ans-ans/prim[i];while(a%prim[i]==0) a/=prim[i];}}if(a>1) ans=ans-ans/a;return ans;
}int main()
{getpri();int t;LL n,m;cin>>t;while(t--){scanf("%lld%lld",&n,&m);LL ans=0LL;int len=(int)sqrt(n);for(int i=1;i<=len;i++){if(n%i==0){if(i>=m){if(i==n) ans=(ans+n)%mod;else ans=(ans+n*Euler(n/i)/2)%mod;}if(n/i!=i && n/i>=m) {if(n/i==n) ans=(ans+n)%mod;else ans=(ans+n*Euler(i)/2)%mod;}//cout<<i<<": "<<ans<<endl;}}printf("%lld\n",ans);}return 0;
}




这篇关于和GCD相关的“个数”及“求和”问题——hdu 2588、nyist 1007的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

MyBatis模糊查询报错:ParserException: not supported.pos 问题解决

《MyBatis模糊查询报错:ParserException:notsupported.pos问题解决》本文主要介绍了MyBatis模糊查询报错:ParserException:notsuppo... 目录问题描述问题根源错误SQL解析逻辑深层原因分析三种解决方案方案一:使用CONCAT函数(推荐)方案二:

Redis 热 key 和大 key 问题小结

《Redis热key和大key问题小结》:本文主要介绍Redis热key和大key问题小结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、什么是 Redis 热 key?热 key(Hot Key)定义: 热 key 常见表现:热 key 的风险:二、

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

Spring 中的循环引用问题解决方法

《Spring中的循环引用问题解决方法》:本文主要介绍Spring中的循环引用问题解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录什么是循环引用?循环依赖三级缓存解决循环依赖二级缓存三级缓存本章来聊聊Spring 中的循环引用问题该如何解决。这里聊

Spring Boot中JSON数值溢出问题从报错到优雅解决办法

《SpringBoot中JSON数值溢出问题从报错到优雅解决办法》:本文主要介绍SpringBoot中JSON数值溢出问题从报错到优雅的解决办法,通过修改字段类型为Long、添加全局异常处理和... 目录一、问题背景:为什么我的接口突然报错了?二、为什么会发生这个错误?1. Java 数据类型的“容量”限制

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

SpringBoot项目中报错The field screenShot exceeds its maximum permitted size of 1048576 bytes.的问题及解决

《SpringBoot项目中报错ThefieldscreenShotexceedsitsmaximumpermittedsizeof1048576bytes.的问题及解决》这篇文章... 目录项目场景问题描述原因分析解决方案总结项目场景javascript提示:项目相关背景:项目场景:基于Spring

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基