码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • lucky number


    题目描述

    李老师的lucky number 是3,5和7,他爱屋及乌,还把所有质因数只有3,5,7的数字认定为lucky number,比如9, 15, 21, 25等等。请聪明的你帮忙算一算小于等于x的lucky number有多少个?

    输入数据

    一个正整数x,3=

    输出数据

    小于等于x的lucky number的个数。

    分析

    1. //假设我们已经获得了一段lucky number序列
    2. // M是这段序列中的最大值
    3. // 我们希望扩充这段序列,直到M达到给定的数值那么大
    4. // 如何扩充?
    5. // 下一个lucky number一定是由当前序列中的某个数*3,*5或者*7得到的
    6. // 我们把可能产生下一个lucky number的数字记为m3, m5和m7
    7. // 他们满足:
    8. // 序列中所有小于m3的数乘以3均不大于M, m3 * 3 > M
    9. // 序列中所有小于m5的数乘以5均不大于M, m5 * 5 > M
    10. // 序列中所有小于m7的数乘以7均不大于M, m7 * 7 > M
    11. // 那么下一个lucky number将会是 min{m3*3, m5*5, m7*7},我们记作new_M
    12. // 如何更新m3, m5, m7呢?
    13. // new_M <= m3*3, new_M <= m5*5, new_M <= m7*7
    14. // 如果new_M = m3*3,那么m3向后推一位,取序列中它的下一个数就可以了,m5和m7则不变
    15. // 如果new_M = m5*5或者m7*7则同理
    16. //
    17. // 考虑初始情况,我们的序列为3, 5, 7
    18. // M = 7, m3 = 3, m5 = 3, m7 = 3
    19. // new_M = 9, new_m3 = 5, new_m5 = 3, new_m7 = 3
    20. //

    代码

    1. #include
    2. #include
    3. using namespace std;
    4. int main() {
    5. long long x;
    6. cin >> x;
    7. if (x < 7) {
    8. int res = 2;
    9. x < 5 ? --res : 0;
    10. x < 3 ? --res : 0;
    11. cout << res << endl;
    12. return 0;
    13. }
    14. vector<long long> ln(0x1000); //lucky number
    15. ln[0] = 3;
    16. ln[1] = 5;
    17. ln[2] = 7;
    18. int m3 = 0, m5 = 0, m7 = 0, M = 2; //m3, m5, m7, M均为元素下标,便于处理
    19. long long N3, N5, N7, new_ln; //N3, N5, N7是m3, m5, m7对应的值
    20. while (ln[M] <= x) {
    21. N3 = ln[m3] * 3;
    22. N5 = ln[m5] * 5;
    23. N7 = ln[m7] * 7;
    24. new_ln = N3 < N5 ? N3 : N5;
    25. new_ln = N7 < new_ln ? N7 : new_ln;
    26. new_ln == N3 ? ++m3 : 0;
    27. new_ln == N5 ? ++m5 : 0;
    28. new_ln == N7 ? ++m7 : 0;
    29. ln[++M] = new_ln;
    30. }
    31. cout << M << endl;
    32. }

  • 相关阅读:
    AP2400 DC-DC降压恒流驱动器 汽车摩托LED大灯电源驱动 全亮半亮瀑闪三功能循环
    3.深入理解Java并发编程
    webpack5配置代码分包
    《无条件养育》读书笔记
    Docker手把手教程(二)核心命令
    如何阅读一本书
    GAN相关网络用什么归一化方法:BatchNorm?Weight Norm?Layer Norm?
    The IDE is running low on memory and this might affect performance.
    Linux系统上搭建Java的运行环境,并且部署JavaWeb程序
    DINO目标检测实验结果可视化(1)——loss和mAP
  • 原文地址:https://blog.csdn.net/kku101xyz/article/details/126923008
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号