第几个幸运数字(蓝桥杯)

news2025/1/16 15:01:30

文章目录

  • 第几个幸运数字
    • 题目描述
    • 答案:1905
    • 生成法
    • C++代码
      • 代码详细注释
      • 代码思路解释

第几个幸运数字

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

到x星球旅行的游客都被发给一个整数,作为游客编号。

x星的国王有个怪癖,他只喜欢数字3,5和7。

国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品。

我们来看前10个幸运数字是:

3 5 7 9 15 21 25 27 35 45

因而第11个幸运数字是:49

小明领到了一个幸运数字 59084709587505,他去领奖的时候,人家要求他准确地说出这是第几个幸运数字,否则领不到奖品。

请你帮小明计算一下,59084709587505是第几个幸运数字。

答案:1905

生成法

首先,我们需要明白题目,即幸运数字只能有3,5,7这三个数作为因子,其他数都不行
那么,我们就只需要生成只有3,5,7因子的数,例如:
3*3,3*5,3*7,5*3,5*5,5*7,7*3,7*5,7*7,9*3,9*5,9*7……
如下图所示:
在这里插入图片描述
由图可得,如果我们要得到59084709587505这个数,我们需要对数组里存的数进行排序和去重,所以在代码中使用set容器,最后输出set存了多少数字即可

C++代码

这段代码的目的是找出一个给定的整数(在这个例子中是59084709587505)是第几个只包含3, 5, 7作为因子的“幸运数字”。下面是对代码的详细注释和解释。

代码详细注释

// 引入所有标准库
#include<bits/stdc++.h>
// 使用标准命名空间
using namespace std;

// 定义一个长整型别名ll
typedef long long ll;
// 定义幸运数字的上限为给定的数字
ll maxn=59084709587505;
// 定义一个集合p,用来存储幸运数字
set<ll> p;

int main()
{
    // 定义一个数组a,包含数字3,5,7
    int a[]={3,5,7};
    // 定义一个变量tou,它将会是用来生成幸运数字的基数
    ll tou=1;
    // 无限循环
    while(true)
    {
        // 遍历数组a
        for(int i=0;i<3;i++)
        {
            // 将tou乘以3,5,7中的每个数
            ll tt=tou*a[i];
            // 如果计算出的数字小于或等于maxn,则将它加入到集合p中
            if(tt<=maxn)
                p.insert(tt);
        }
        // 找到集合p中大于tou的最小的数字,并更新tou
        tou=*p.upper_bound(tou);
        // 如果tou等于maxn,则终止循环
        if(tou==maxn) break;
    }
    // 输出集合p的大小,即小明的幸运数字是第几个幸运数字
    cout<<p.size();
    return 0;
}

代码思路解释

代码的基本思路是生成一个幸运数字的集合,然后计算给定的幸运数字在集合中的位置。这里的幸运数字是指仅包含3、5、7作为因子的数字。这是通过以下步骤实现的:

  1. 初始化: 定义一个长整型的集合p来存储生成的幸运数字,初始基数tou设置为1。

  2. 生成幸运数字: 通过一个无限循环,乘以3、5、7,并将结果小于等于给定数maxn的数添加到集合p中。

  3. 更新基数: 使用upper_bound函数来找到集合中大于当前基数tou的最小元素,并更新tou为这个元素。这一步确保了每次都在增加新的幸运数字到集合中。

  4. 终止条件: 当更新后的基数tou等于maxn时,循环结束。

  5. 输出结果: 集合p现在包含了小于等于maxn的所有幸运数字。输出集合的大小即得到给定的幸运数字是第几个。

最终,程序输出集合p的大小,这个大小就是小明幸运数字的排名。

重要的是要注意,这个程序假设给定的数字确实是一个幸运数字,因此它会出现在集合p中。程序利用了set在C++标准库中的性质,即它会自动排序且不包含重复元素。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1557847.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软考高级架构师:信息安全保护等级

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

二十四种设计模式与六大设计原则(三):【装饰模式、迭代器模式、组合模式、观察者模式、责任链模式、访问者模式】的定义、举例说明、核心思想、适用场景和优缺点

接上次博客&#xff1a;二十四种设计模式与六大设计原则&#xff08;二&#xff09;&#xff1a;【门面模式、适配器模式、模板方法模式、建造者模式、桥梁模式、命令模式】的定义、举例说明、核心思想、适用场景和优缺点-CSDN博客 目录 装饰模式【Decorator Pattern】 定义…

Android MediaPlayer

MediaPlayer 类是媒体框架最重要的组成部分之一。此类的对象能够获取、解码以及播放音频和视频&#xff0c;而且只需极少量设置。它支持多种不同的媒体源&#xff0c;例如&#xff1a; • 本地资源 • 内部 URI&#xff0c;例如您可能从内容解析器那获取的 URI • 外部网址…

idea从零开发Android 安卓 (超详细)

首先把所有的要准备的说明一下 idea 2023.1 什么版本也都可以操作都是差不多的 gradle 8.7 什么版本也都可以操作都是差不多的 Android SDK 34KPI 下载地址&#xff1a; AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载 …

智慧水利中数据可视化的关键作用

在当今这个数据驱动的时代&#xff0c;数据可视化已成为转化复杂数据集为易于理解的视觉格式的关键技术&#xff0c;它在智慧水利领域的应用尤为显著。智慧水利利用现代信息技术&#xff0c;整合水资源管理的各个方面&#xff0c;旨在提高水资源的使用效率和管理效能。数据可视…

Linux基础篇:VMware虚拟机3种常用的网络模式介绍

VMware虚拟机3种常用的网络模式介绍 VMware虚拟机提供了几种不同的网络连接模式&#xff0c;以满足不同场景下的网络需求。以下是VMware虚拟机的三种主要网络模式&#xff1a; 1.桥接模式&#xff08;Bridged Mode&#xff09;网卡名称VMnet0 桥接模式允许虚拟机直接连接到物…

Linux——将云服务器作为跳板机,frp实现内网穿透

文章目录 操作步骤1. 准备工作&#xff1a;2. 配置frp服务器端&#xff1a;3. 配置frp客户端&#xff1a;4. 启动frp客户端&#xff1a;5. 测试连接&#xff1a;6. 安全注意事项&#xff1a; 云服务器性能分析阿里云具体操作步骤1. 购买&#xff1a;2. 登录&#xff1a;3. 首次…

Transformer论文阅读

Transformer论文阅读 摘要结论1 Introduction &#xff08;导言&#xff09;2 Background3 Model Architecture3.1 Encoder and Decoder StacksEncoderLayer NormDecoder 3.2 Attention3.2.1 Scaled Dot-Product Attention3.2.2 Scaled Dot-Product Attention3.2.3 Application…

HAProxy + Vitess负载均衡

一、环境搭建 Vitess环境搭建&#xff1a; 具体vitess安装不再赘述&#xff0c;主要是需要启动3个vtgate&#xff08;官方推荐vtgate和vtablet数量一致&#xff09; 操作&#xff1a; 在vitess/examples/common/scripts目录中&#xff0c;修改vtgate-up.sh文件&#xff0c;…

嵌入式Qt 布局管理器QBoxLayout

一.存在问题 二.布局管理器 三.布局接口函数的使用 TestBtn1.setText("Test Button 1"); TestBtn1.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); TestBtn1.setMinimumSize(160, 30); 使用setSizePolicy&#xff0c;那么 TestBtn1按钮 就会随着…

TypseScript再学习之类型别名和接口(10)

先看类型别名&#xff1a;使用关键字 type 声明,注意有等于号额 // 类型别名 使用关键字 type 声明,注意有等于号额 type Cat {name: string; }; let huahua: Cat {name: "花花", };type和interface不同之处在于&#xff1a;interface 是可以自动合并类型的&#…

源支付V7开源版2.99,修复各种提示错误

源支付V7开源版2.99&#xff0c;修复各种提示错误 加密说明&#xff1a;200拿来的&#xff0c;只有8.1这个文件加密&#xff0c;其他文件无任何加密&#xff0c;已修复各种提示错误 测试其他开源版安装提示错误&#xff0c;有几个文件是加密的 注&#xff1a;开发不易&#…

基于stm32的h5新建工程

目录 基于stm32的h5新建工程前言实验目的原理图部分搭建工程引脚配置界面&#xff1a;时钟配置界面工程选项卡&#xff1a; 编写代码实现点灯本文中使用的测试工程 基于stm32的h5新建工程 本文目标&#xff1a;基于stm32的基础实验 按照本文的描述&#xff0c;应该可以跑通实…

python学习16:python中的布尔类型和条件语句的学习

python中的布尔类型和条件语句的学习 1.布尔&#xff08;bool&#xff09;类型的定义&#xff1a; 布尔类型的字面量&#xff1a;True表示真&#xff08;是、肯定&#xff09; False表示假&#xff08;否、否定&#xff09; True本质上是一个数字记作1&#xff0c;False记作0 …

码支付个人支付宝永不掉线使用教程

​支付宝免CK添加操作稍微繁琐点&#xff0c;请耐心观看 此通道必须关闭你的余额宝自动转入功能&#xff0c;否则可能造成不跳转 支付宝添加的所有通道均支持H5免输入收款 第一步&#xff1a;打开支付宝开发平台&#xff0c;然后用你的支付宝注册登陆&#xff1a;https://op…

Node.js的Event Loop:六个阶段详解

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Ypay源支付码支付最新PC三合一监控软件实测有效

Ypay源支付码支付最新PC三合一监控软件实测有效 【免费授权】源支付正版授权_ 打造更专业的免签支付系统

深入理解HDFS工作原理:大数据存储和容错性机制解析

** 引言&#xff1a; ** 在当今数据爆炸的时代&#xff0c;存储和管理大规模数据成为了许多组织面临的重要挑战。为了解决这一挑战&#xff0c;分布式文件系统应运而生。Hadoop分布式文件系统&#xff08;HDFS&#xff09;作为Apache Hadoop生态系统的核心组件之一&#xff…

C语言-写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换。

0xaaaaaaaa...等是什么&#xff1f;-CSDN博客https://blog.csdn.net/Jason_from_China/article/details/137179252 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #define SWAP(num) (((num & 0xAAAAAAAA) >> 1) | ((num & 0x55555555) << …

本地虚拟机服务器修改站点根目录并使用域名访问的简单示例

说明&#xff1a;本文提及效果是使用vmware虚拟机&#xff0c;镜像文件是Rocky8.6 一、配置文件路径 1. /etc/httpd/conf/httpd.conf #主配置文件 2. /etc/httpd/conf.d/*.conf #调用配置文件 调用配置文件的使用&#xff1a; vim /etc/httpd/conf.d/webpage.conf 因为在主配…