最大公约数和最小公倍数问题(3月30日)

2023-11-02

在这里插入图片描述
在这里插入图片描述

给出xo和yo ,找两个数满足 xo是这两个数的最小公约数,yo是这两个数的最小公倍数。首先题目给的数据是(2<=x0<100000,2<=y0<=1000000) 如果用双层for循环的话一看就会直接超时。

对于求最大公约数我们就直接用欧几里得算法,
我们还有一个关系式:
a *b = 最大公约数 X 最小公倍数
所以我们只要求出最大公约数就可以很容易求出最小公倍数。

如果直接用双重for就会直接炸掉,(2<=x0<100000,2<=y0<=1000000)数据范围超太多了。但是校OJ的测试点不全且不一定到达数据最坏的情况。

我用双重for循环在校OJ上得80分在这里插入图片描述
洛谷上得50分
在这里插入图片描述
当我把for循环改成单个for循环时在校OJ上就过了

这里简写
for(int a = 2;a<=x*y;a++){
			b = x*y/a;
}

在这里插入图片描述
但是在洛谷上还有一个测试点超时
在这里插入图片描述
我们可以知道 15 12 12 15 是相同的一组但是在遍历的时候我们遍历了两次,对于整体我们一次能遍历两个所以我们可以把遍历的范围缩小到sqrt(x*y)。这样就不会超时了。

但这样在洛谷上交还是过不了,始终90分,我下载了测试点才知道当 x = y 时x == y
无论是最大公约数还是最小公倍数都是1也只有1和1这一组满足 。

所以当x == y 时我们需要特判一下,这样才能圆满AC.

#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int a,b,x,y,num;

//欧几里得 最小公倍数
int gcd(int a, int b) {
    return b == 0 ? a : gcd(b, a%b);
}

int main(){
	cin>>x>>y;
//这里要特盘
	if(x == y){
		cout<<"1";
		return 0; 
	}
	for(int a = 1;a<=sqrt(x*y);a++){
	//我这里写的答辩,可以简写的
			b = x*y/a;
			int ma = max(a,b);
			int mi = min(a,b);
			int g = gcd(mi,ma%mi);
			int l = (x*y)/g;
			if(g == x&&l == y&&a*b == x*y){
				num++;
			}
	}
	cout<<num*2;
return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最大公约数和最小公倍数问题(3月30日) 的相关文章

  • 部署 MVC4 项目时出错:找不到文件或程序集

    过去 我只需使用 Visual Studio 2012 发布到 AWS 菜单项即可部署我的 MVC4 网站 到 AWS Elastic Beanstalk 现在 程序可以在本地编译并运行 但无法部署 从消息来看 它似乎正在寻找不在当前部署的
  • ROWNUM 的 OracleType 是什么

    我试图参数化所有现有的 sql 但以下代码给了我一个问题 command CommandText String Format SELECT FROM 0 WHERE ROWNUM lt maxRecords command CommandT
  • 模板类的不明确多重继承

    我有一个真实的情况 可以总结为以下示例 template lt typename ListenerType gt struct Notifier void add listener ListenerType struct TimeListe
  • 如何在没有 Control.Invoke() 的情况下从后台线程修改控件属性

    最近 我们遇到了一些旧版 WinForms 应用程序 我们需要更新一些新功能 在专家测试该应用程序时 发现一些旧功能被破坏 无效的跨线程操作 现在 在您认为我是新手之前 我确实有一些 Windows 窗体应用程序的经验 我不是专家 但我认为
  • SSH 主机密钥指纹与模式 C# WinSCP 不匹配

    我尝试通过 WinSCP 使用 C 连接到 FTPS 服务器 但收到此错误 SSH 主机密钥指纹 与模式不匹配 经过大量研究 我相信这与密钥的长度有关 当使用 服务器和协议信息 下的界面进行连接时 我从 WinSCP 获得的密钥是xx xx
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • HttpClient 像浏览器一样请求

    当我通过 HttpClient 类调用网站 www livescore com 时 我总是收到错误 500 可能服务器阻止了来自 HttpClient 的请求 1 还有其他方法可以从网页获取html吗 2 如何设置标题来获取html内容 当
  • .Net Core / 控制台应用程序 / 配置 / XML

    我第一次尝试使用新的 ConfigurationBuilder 和选项模式进入 Net Core 库 这里有很多很好的例子 https docs asp net en latest fundamentals configuration ht
  • 在 ASP.Net Core 2.0 中导出到 Excel

    我曾经使用下面的代码在 ASP NET MVC 中将数据导出到 Excel Response AppendHeader content disposition attachment filename ExportedHtml xls Res
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • .NET 选项将视频文件流式传输为网络摄像头图像

    我有兴趣开发一个应用程序 它允许我从 xml 构建视频列表 包含视频标题 持续时间等 并将该列表作为我的网络摄像头流播放 这意味着 如果我要访问 ustream tv 或在实时通讯软件上激活我的网络摄像头 我的视频播放列表将注册为我的活动网
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向
  • Bing 地图运行时错误 Windows 8.1

    当我运行带有 Bing Map 集成的 Windows 8 1 应用程序时 出现以下错误 Windows UI Xaml Markup XamlParseException 类型的异常 发生在 DistanceApp exe 中 但未在用户
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co

随机推荐

  • vue5种方式实现页面“刷新“

    vue中五种方式实现页面 刷新 1 使用window location reload 强制刷新 都会使页面有短暂的空白 体验效果不是特别好 home vue
  • 提高生活、学习、工作效率的方法——时间管理Vs个人管理

    首先 我想对于大家来说 时间管理这个词应该并不陌生 不过 在开会之前 又有几个知道呢 反正我当时并不知道 这就需要反思了 不过这里 先不做反思 先说说时间管理 初次接触到这个词 我想的是 为什么要管理 怎样进行时间管理 该怎么管理 随后 米
  • 12. 集群调度

    文章目录 简介 调度过程 自定义调度器 调度亲和性 Node亲和性 preferredDuringSchedulingIgnoredDuringExecution requiredDuringSchedulingIgnoredDuringE
  • 针对于MLE和MLP的代码例子实现

    背景 首先该例子来源于CSDN 详解最大似然估计 MLE 最大后验概率估计 MAP 以及贝叶斯公式的理解 nebulaf91的博客 这里的代码作为对上述内容的补充和实现 代码 import numpy as np import matplo
  • SSD接口种类

    转自微信公众号 存储随笔 随着SSD价格的不断下降以及SSD性能的不断提升 越来越多的朋友开始考虑给自己的电脑升级SSD固态硬盘 但是市面上现在SSD的根据不同的大小与尺寸 有多种多样的接口的SSD 本篇文章就当下主流的一些SSD接口进行简
  • OpenStack核心组件-horizon web 界面管理

    1 horizon 介绍 Horizon Horizon 为 Openstack 提供一个 WEB 前端的管理界面 UI 服务 通过 Horizone 所提供的 DashBoard 服务 管理员可以使用通过 WEB UI 对 Opensta
  • Oracle 批量提交,批量绑定 OCIBindByName 和OCIBindObject 的使用

    穷遍所有OCI文档找不出一个能绑定多行数据的说明和示例 自己尝试快两周解决了Oracle Spatial 批量绑定将Oracle的写入效率提升到了5000行左右 以下是一点心得 Oracle OCI 基本操作 本文不多说 假设你会用基本的O
  • [面试题]java程序内存泄漏怎么排查

    java程序内存泄漏怎么排查 首先了解几个命令 怎么判断当前程序有没有出现内存溢出 模拟代码 模拟步骤 判断依据 出现内存溢出怎么办 最原始的方法 使用JProfiler解析hprof文件 在线dump文件分析网站https console
  • PCB相关知识-封装+元件属性+印制电路板PCB

    文章目录 封装Footprint 元件属性Properties 印制电路板PCB 封装Footprint 每个元器件都对应一个封装 封装相当于元器件在现实中的载体 原理图导入到PCB中的除了网络信息 还有封装信息 我们在PCB中移动摆放的就
  • vscode 好用的插件推荐

    vscode 好用的插件推荐 文章目录 vscode 好用的插件推荐 1 Tabnine 安装 使用 2 Git Graph 安装 使用 3 Comment Translate 安装 使用 1 Tabnine Tabnine 需要大量的代码
  • Vue3 Vite4 ElementPlus TS模板(含Vue-Router4+Pinia4)

    引言 手动安装配置Vue3 ElementPlus模板比较繁琐 网上寻找一些模板不太符合自己预期 因此花点精力搭建一个符合自己需求的架子 采用最新的组件 版本如下 vite 4 3 9 vite plugin mock 2 9 8 vue
  • Openwrt 自编译后安装官方ipk时产生kernel MD5不兼容的问题处理

    目录 环境 原因 解决方法 最后 环境 芯片 V3S 软件 基于Openwrt 19 07 3的自编译版本 问题 在安装需要校验kernel版本的ipk时 无法安装 报错 satisfy dependencies for Cannot sa
  • Linux·深入理解 ext4 等 Linux 文件系统

    了解 ext4 的历史 包括其与 ext3 和之前的其它文件系统之间的区别 目前的大部分 Linux 文件系统都默认采用 ext4 文件系统 正如以前的 Linux 发行版默认使用 ext3 ext2 以及更久前的 ext 对于不熟悉 Li
  • 网络安全课程设计Java实现DES加密算法(可视化界面)代码+设计文档

    一 DES加密 解密算法 DES是一种对称加密算法 DES算法明文分组长度为64 bit 秘钥长度也为64 bit 但是实际密钥长度只有56位 其中第8 16 24 32 40 48 56 64位是奇偶校验位 用于检查密钥在产生 分配及存储
  • 安装 Nginx后无法正常显示欢迎界面的问题--解决方案

    问题 在终端中输入 curl 127 0 0 1 后 代码中出现404 解决方案 1 卸载nginx 需要预先安装 aptitude aptitude remove nginx 2 重装nginx apt get install nginx
  • 由浅入深理解区块链技术

    一 区块链技术概述 区块链技术的核心思想与密码朋克组织的渊源很深 这个组织由一批致力于个人隐私保护的密码学爱好者组成 他们认为在互联网环境下想要保护个人隐私 应该使用基于技术的而非其他组织背书的加密方法 不能够全部依靠大型机构提供的加密工具
  • STM32使用SRAM扩展内存

    目录 一 SRAM介绍 二 STM32F103系列的FSMC模块 三 初始化配置及数据访问 四 使全局变量定义在外部SRAM中的方法 五 参考文章及资料 一 SRAM介绍 SRAM Static Random Access Memory 即
  • mesh学习1

    TOC 基础一 初识基础 首先点和面的联系 三个点构成一个小三角形 然后面就是由无数的小三角形构成 另外相同位置的顶点可以复用 就像一个正方形 四个点即可 三角面有正反之分 关键看法线方向 发现朝外的 我们能看到 反过来就看不到了 可以参考
  • Java利用ASCII码转换英文字母遇到的小问题

    public class Seconde public static void main String args int a 65 b 97 for int i 1 i lt 26 i a 1 b 1 System out println
  • 最大公约数和最小公倍数问题(3月30日)

    一 给出xo和yo 找两个数满足 xo是这两个数的最小公约数 yo是这两个数的最小公倍数 首先题目给的数据是 2 lt x0 lt 100000 2 lt y0 lt 1000000 如果用双层for循环的话一看就会直接超时 二 对于求最大