当前位置: 首页 > ops >正文

【信奥数学基础】最小公倍数与不等式证明

【题】洛谷P6659 最小公倍数

给出z个整数M,求区间[a,b],满足区间内所有数的最小公倍数为M。

先上AC代码

# include <bits/stdc++.h>
using namespace std;
long long M,d,dp[50];  
map<long long,int[2]> mp;
int z;
long long gcd(long long x,long long y){ return y? gcd(y,x%y) : x;}
void putmp(long long key, int l, int r){if(mp.find(key)==mp.end()) mp[key][0]=l, mp[key][1]=r;else if(mp[key][0]>l) mp[key][0]=l, mp[key][1]=r;else if(mp[key][0]==l && mp[key][1]>r) mp[key][1]=r;	
}
void chk2(long long x){ // 检查长度为2的区间[a,a+1], x==a(a+1) ?long long a=sqrt(x);if(a*(a+1)==x)putmp(x,a,a+1);
} 
void chk3(long long x){ // 检查长度为3的区间 long long a=pow(x,1.0/3.0),a2=pow(2*x,1.0/3.0);// 首数为偶数,则gcd为2if(a%2 && a*(a+1)*(a+2)==x) putmp(x,a,a+2);if(a2%2==0 && a2*(a2+1)*(a2+2)==2*x) putmp(x,a2,a2+2);
}
int main(){cin>>z;for(int a=1;a<1e6;a++){ dp[1]=1ll*a*(a+1);dp[2]=dp[1]*(a+2); if(a%2==0)dp[2]/=2; // 不能更新所有区间2/3,会MLE for(int j=3;j<45;j++){d=dp[j-1]/gcd(dp[j-1],a+j);if(d>=(1e18)/(a+j))break;dp[j]=d*(a+j);putmp(dp[j],a,a+j);}}while(z-->0){cin>>M;chk2(M),chk3(M);if(mp.find(M)!=mp.end()) cout<<mp[M][0]<<" "<<mp[M][1]<<endl;else cout<<"NIE"<<endl;	}return 0;
} 

这题数据规模较大(M<=1e18),所以需要一些数学证明确定遍历的边界。

求证:

  1. gcd(a,a+1)==1  && lcm(a,a+1)==a*(a+1)
  2. gcd( lcm(a,a+1), a+2]) == (a%2)?1:2   
    && lcm([a,a+2]) == lcm( lcm(a,a+1), a+2) == a*(a+1)*(a+2) / ( (a%2)?1:2 )
  3. 如果 M==a*(a+1),必有 a=int(sqrt(M))
  4. 如果 M==a*(a+1)*(a+2),必有 a=int( M**(1/3))
  5. 当 j>=3, 如果[a, a+j] 区间所有数的最小公倍数是M(<=1e18),那么a<1e6

提示:前2题可用整除和最小公倍数的概念。后三题可用不等式的性质。

http://www.xdnf.cn/news/4508.html

相关文章:

  • Docker 容器化部署深度研究与发展趋势
  • 【数据结构】单链表
  • Qt开发经验 --- 避坑指南(6)
  • Android接入国标平台:工业现场级的GB28181移动端接入实践
  • ps信息显示不全
  • 【纯小白博客搭建】Hugo+Github博客部署及主题(stack)美化等界面优化记录
  • 基于STM32、HAL库的ZMOD4410AI1R 气体传感器驱动程序设计
  • qwen2.5vl
  • 考研数据结构之树形查找:二叉排序树、平衡二叉树与红黑树(包含真题解析)
  • 使用 Couchbase Analytics Service 的典型步骤
  • 【面板数据】公开整理-各省刑事案件统计数据集(2011-2023年)
  • Java01-初识Java
  • C 语言 第六章 结构体(1)
  • 短词匹配:拼音相似度
  • LeetCode热题100--73.矩阵置零--中等
  • C语言初阶--数组
  • GSENSE2020BSI sCMOS科学级相机主要参数及应用场景
  • 探针卡的类型及其在半导体测试中的应用
  • Java高频面试之并发编程-13
  • 奥威BI:AI驱动的智能财务分析革新,重塑企业决策新范式
  • 深入探索 Spark RDD 行动算子:功能解析与实战应用
  • Python基础语法(上)
  • 从图灵机到量子计算:逻辑可视化的终极进化
  • 基于C++实现(控制台)交通咨询系统
  • C语言指针用法详解
  • 切片和边缘计算技术分析报告
  • 【今日三题】跳台阶扩展问题(找规律) / 包含不超过两种字符的最长子串 / 字符串的排列(回溯—全排列)
  • 架设手游使用游戏盾SDK怎么提升网络速度?
  • 【ROS2】Nav2源码之行为树定义、创建、加载
  • 六级阅读———2024.12卷一 仔细阅读2