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

week1-[分支嵌套]公因数

week1-[分支嵌套]公因数

题目描述

给定 444 个正整数 a,b,c,ka,b,c,ka,b,c,k。如果 a,b,ca,b,ca,b,c 都是 kkk 的倍数,那么称 kkka,b,ca,b,ca,b,c 的公因数。否则如果某两个数都是 kkk 的倍数,那么称 kkk 是这两个数的公因数。问 kkk 是哪些数的公因数?

输入格式

输入共 111444 个正整数 a,b,c,ka,b,c,ka,b,c,k

输出格式

输入共 111 行,为 abacbcabc 表示答案。如果 kkk 不是某两个数或这三个数的公因数,输出 none

样例 #1

样例输入 #1

8 10 14 2

样例输出 #1

abc

样例 #2

样例输入 #2

11 16 15 5

样例输出 #2

none

样例 #3

样例输入 #3

9 16 12 3

样例输出 #3

ac

提示

数据范围

对于所有数据,1≤a,b,c,k≤10001\leq a,b,c,k\leq 10001a,b,c,k1000

week1-[分支嵌套]公因数 题解

1. 阅读题目

给定 4 个正整数 a,b,c,ka,b,c,ka,b,c,k,我们要判断 kkk 是否为 a,b,ca,b,ca,b,c 的公因数。

规则:

  • 如果 a、b、c 都是 kkk 的倍数 → 输出 abc
  • 否则,如果有且只有两个是 kkk 的倍数 → 输出对应的两个字母(ab / ac / bc
  • 如果没有两个或三个数是 kkk 的倍数 → 输出 none

2. 分析问题

  • 判断是否是倍数:用 x % k == 0
  • 优先级:
    1. 三个数都满足 → abc
    2. 只满足两个数 → 输出这两个字母
    3. 其他情况 → none
  • 因为三个数的判断优先,所以可以用 分支嵌套 先判断三人情况,再判断两人情况。

3. 解决方案

  • 读入 a, b, c, k

  • 判断:

    if (a%k==0 && b%k==0 && c%k==0) 输出 "abc"
    else if (a%k==0 && b%k==0) 输出 "ab"
    else if (a%k==0 && c%k==0) 输出 "ac"
    else if (b%k==0 && c%k==0) 输出 "bc"
    else 输出 "none"
    

4. C++ 代码实现

#include <iostream>
using namespace std;int main() {int a, b, c, k;cin >> a >> b >> c >> k;if (a % k == 0 && b % k == 0 && c % k == 0) {cout << "abc";} else if (a % k == 0 && b % k == 0) {cout << "ab";} else if (a % k == 0 && c % k == 0) {cout << "ac";} else if (b % k == 0 && c % k == 0) {cout << "bc";} else {cout << "none";}return 0;
}

5. 数据测试

样例 1

输入

8 10 14 2

过程

  • 8 % 2 == 0
  • 10 % 2 == 0
  • 14 % 2 == 0
    → 三个都满足 → 输出 abc

输出

abc

样例 2

输入

11 16 15 5

过程

  • 11 % 5 != 0
  • 16 % 5 != 0
  • 15 % 5 == 0
    → 只有一个满足 → 输出 none

输出

none

样例 3

输入

9 16 12 3

过程

  • 9 % 3 == 0
  • 16 % 3 != 0
  • 12 % 3 == 0
    → 满足 a 和 c → 输出 ac

输出

ac

6. 时间复杂度与空间复杂度

  • 时间复杂度:常数级 O(1)
  • 空间复杂度:常数级 O(1)

7. 优化方案

  • 目前是固定 3 个数,如果扩展到更多数,可以用数组存储,然后统计 %k==0 的元素下标,输出对应标签。
  • 如果数据很大,可提前判断 k 是否大于最大值,直接输出 none,减少取模运算次数(本题数据量极小,这种优化无意义)。
http://www.xdnf.cn/news/1297855.html

相关文章:

  • Cherryusb UAC例程对接STM32 SAI播放音乐和录音(上)=>SAI+TX+RX+DMA的配置与音频回环测试
  • C++:浅尝gdb
  • 云计算-Docker Compose 实战:从OwnCloud、WordPress、SkyWalking、Redis ,Rabbitmq等服务配置实例轻松搞定
  • Mybatis学习笔记(七)
  • 《疯狂Java讲义(第3版)》学习笔记ch4
  • 分享10个ai生成ppt网站(附ai生成ppt入口)
  • 智慧工地从工具叠加到全要素重构的核心引擎
  • 跨域及解决方案
  • AI搜索重构下的GEO优化服务商格局观察
  • 一致性哈希Consistent Hashing
  • DAY 42 Grad-CAM与Hook函数
  • JS 解构赋值语法
  • 【OpenCV】Mat详解
  • docker compose部署mysql
  • 面试题之项目中灰度发布是怎么做的
  • 深入了解linux系统—— 线程概念
  • ZigBee入门与提高(3)—— ZigBee协议初识
  • Visual Studio2019/2022离线安装完整教程(含闪退解决方法)
  • Windows bypassUAC 提权技法详解(一)
  • 基于FPGA的8PSK+卷积编码Viterbi译码通信系统,包含帧同步,信道,误码统计,可设置SNR
  • Python之Django使用技巧(附视频教程)
  • HTML <link rel=“preload“>:提前加载关键资源的性能优化利器
  • 企业智脑正在构建企业第二大脑,四大场景引擎驱动数字化转型新范式
  • C++入门自学Day11-- List类型的自实现
  • 手写MyBatis第16弹:泛型魔法应用:MyBatis如何破解List的运行时类型
  • 一种适用于 3D 低剂量和少视角心脏单光子发射计算机断层成像(SPECT)的可泛化扩散框架|文献速递-深度学习人工智能医疗图像
  • OpenCV 高斯模糊降噪
  • Spring Boot + Redis + 布隆过滤器防止缓存穿透
  • 带root权限_贝尔RG020ET-CA融合终端S905L处理器当贝纯净版刷机教程
  • 分布式系统架构设计模式:从微服务到云原生