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

2025年全国青少年信息素养大赛复赛C++集训(15):因子问题(题目及解析)

2025年全国青少年信息素养大赛复赛C++集训(15):因子问题(题目及解析)

在这里插入图片描述

题目描述

任给两个正整数N、M,求一个最小的正整数a,使得a和(M-a)都是N的因子。

时间限制:10000

内存限制:65536

输入

包括两个整数N、M。N不超过1,000,000。

输出

输出一个整数a,表示结果。如果某个案例中满足条件的正整数不存在,则在对应行输出-1

样例输入

35 10

样例输出

5

AC代码

#include<bits/stdc++.h>
using namespace std;int n, m; // 输入的N和M
bool f = 0; // 标记是否找到符合条件的aint main() {cin >> n >> m;// 遍历可能的a值,从1到1e6。因为N不超过1e6,所以因子最大为Nfor(int a = 1; a <= 1000000; a++) {// 检查三个条件:a是N的因子,M-a是N的因子,且a必须小于M(保证M-a为正)if(n % a == 0 && n % (m - a) == 0 && m > a) {f = 1; // 找到解cout << a; // 输出最小的abreak; // 由于是从小到大遍历,找到后直接退出}}if(f == 0) { // 遍历完所有可能后仍未找到cout << -1;}return 0;
}

功能分析

  1. 目标
    • 寻找最小的正整数a,使得a和(M-a)均为N的因子,且a < M。
  2. 遍历范围
    • 由于题目中N的最大值为1e6,因此a的最大可能值不超过1e6。遍历1到1e6的所有整数。
  3. 条件检查
    • n % a == 0:确保a是N的因子。
    • n % (m - a) == 0:确保(M - a)是N的因子。
    • m > a:确保M - a为正整数。

文末彩蛋:

关注并查看老师的个人主页,学习完整csp信奥赛完整系列课程: https://edu.csdn.net/lecturer/7901

在这里插入图片描述

http://www.lryc.cn/news/2387305.html

相关文章:

  • 如何通过仿真软件优化丝杆升降机设计
  • Vue3进阶教程:1.初次了解vue
  • WordPress免费网站模板下载
  • 【深度学习新浪潮】以图搜地点是如何实现的?(含大模型方案)
  • element的el-table翻页选中功能
  • Python打卡训练营学习记录Day38
  • deepseek开源资料汇总
  • CollUtil详解
  • Elasticsearch的运维
  • Linux编辑器——vim的使用
  • 线性回归原理推导与应用(八):逻辑回归二分类乳腺癌数据分类
  • Jenkins分配对应项目权限与用户管理
  • Mate桌面环境系统与终端模拟器参数配置
  • fabric 是一个开源框架,用于使用 AI 增强人类能力。它提供了一个模块化框架,用于使用一组可在任何地方使用的众包人工智能提示来解决特定问题
  • 基于PDF流式渲染的Word文档在线预览技术
  • 华为仓颉语言初识:结构体struct和类class的异同
  • 数据仓库基础知识总结
  • vue2使用element中多选组件el-checkbox-group,数据与UI更新不同步
  • linux磁盘分区及挂载、fdisk命令详解
  • anaconda 安装教程以及常用命令
  • C/C++的OpenCV的锐化
  • Eigen矩阵存储顺序以及转换
  • OpenLayers 加载ArcGIS瓦片数据
  • 2025蓝桥杯WP
  • 数字人教师:开启教育智慧革新之旅
  • Linux中Java开发、部署和运维常用命令
  • 详解srs流媒体服务器的集群
  • ubuntu22.04 安装 SecureCRT8.7.3
  • Day 37
  • libvirt设置虚拟机mtu实现原理