C++算法竞赛篇(五)循环嵌套题型讲解

  • 前言
  • C++循环嵌套题型讲解
    • 第一题 包含数字的9
    • 第二题 求出 e 的值
    • 第三题 斐波那契数列
    • 第四题 第 n 小的质数
    • 第五题 水仙花数


前言

  • 前面的题型里我们认识了C++里面的三大循环
  • 本篇博客我们开始讲解C++循环嵌套题型

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的C++算法竞赛篇文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_13001405.html?spm=1001.2014.3001.5482


C++循环嵌套题型讲解

第一题 包含数字的9

题目链接https://www.nowcoder.com/practice/0948f4f3344c452f843afd3585dd0f8d?tpId=290&tqId=320953&ru=/exam/oj&qru=/ta/beginner-programmers/question-ranking&sourceUrl=%2Fexam%2Foj

在这里插入图片描述
解题思路

  1. 遍历范围:需统计 1~2019 所有整数中包含数字 9 的数的个数,通过 for 循环遍历 i12019
  2. 包含9的判断逻辑:对每个数 i,用 while 循环分解其每一位(n = i,通过 n % 10 取末位、n = n / 10 去掉末位)。若某一位为 9,则计数 count++ 并通过 break 跳出该数的判断(避免重复计数)。
  3. 输出格式:遍历结束后,输出最终计数 count
#include <iostream>
using namespace std;int main() {int count = 0;for (int i = 1;i<=2019;i++){int n = i;while(n){if( n % 10 == 9){count++;break;}n = n /10;}}cout << count ;return 0;
}

在这里插入图片描述

第二题 求出 e 的值

题目链接https://www.luogu.com.cn/problem/B2079

在这里插入图片描述
解题思路

  1. 输入处理:用 cin 读取整数 n,确定需计算 e 的近似值的累加项数(共 n+1 项,包含 0!)。
  2. 累加逻辑(嵌套循环)
    • 外层 for 循环控制累加次数(从 1n,对应 1/1!1/n!)。
    • 内层 for 循环计算当前项的阶乘(r = r * jj1i),再将 1.0 / r 累加到 sum(注意用 1.0 确保浮点运算)。
  3. 输出格式:用 printf%.10f 格式输出保留 10 位小数的 e 近似值。
#include <iostream>
#include <cstdio>using namespace std;int main()
{int n;double sum = 1;cin >> n;for(int i = 1; i <= n; i++){long long r = 1;for(int j = 1; j <= i; j++){r *= j;}sum += 1.0 / r;}printf("%.10f\n", sum);return 0;
}

在这里插入图片描述

第三题 斐波那契数列

题目链接 https://www.luogu.com.cn/problem/B2064

在这里插入图片描述

解题思路

  1. 输入处理:先读取测试用例数 n,再通过 while(n--) 循环逐个读取需查询的斐波那契数列位置 a
  2. 斐波那契计算逻辑
    • 斐波那契数列前两项固定为 1, 1x=1, y=1)。
    • a > 2,用 while 循环迭代计算:z = x + y(下一项),更新 x = yy = z,直到迭代到第 a 项。
  3. 输出格式:对每个查询的 a,输出对应的斐波那契数 z
#include <iostream>
using namespace std;int main()
{int n = 0;int a = 0;cin >> n;while(n--){cin >> a;// 计算第a个斐波那契数int x = 1;int y = 1;int z = 1;while (a > 2){z = x + y;x = y;y = z;a--;}cout << z << endl;}return 0;
}

在这里插入图片描述

第四题 第 n 小的质数

题目链接 https://www.luogu.com.cn/problem/B2085

在这里插入图片描述

解题思路

  1. 输入处理:用 cin 读取整数 n,表示需找第 n 个质数
  2. 质数判断逻辑(循环嵌套)
    • 外层 while(1) 循环遍历数字 i(从 2 开始,因为 2 是最小质数)。
    • 内层 for 循环通过 j <= sqrt(i) 优化判断:若 i % j == 0,则 i 不是质数(flag=0);否则 i 是质数(flag=1)。
    • 找到质数时 cnt++,当 cnt == n 时,跳出循环,此时 i 即为第 n 小的质数。
  3. 输出格式:输出第 n 小的质数 i
#include <iostream>
#include <cmath>
using namespace std;int main()
{int n;cin >> n;int i = 2;int cnt = 0; // 计数器while(1){// 判断i是否是素数int flag = 1; // 假设是素数for(int j = 2; j <= sqrt(i); j++){if(i % j == 0){flag = 0; // 不是素数break;}}if(flag == 1)cnt++;if(cnt == n)break;i++;}cout << i << endl;return 0;
}

在这里插入图片描述

第五题 水仙花数

题目链接 https://ybt.ssoier.cn/problem_show.php?pid=2029
解题思路

  1. 遍历范围:需筛选 100~999 的所有三位数,通过 for 循环遍历 i100999
  2. 水仙花数判断逻辑
    • 对每个数 i,用 while 循环分解其每一位(tmp = i,通过 tmp % 10 取末位、tmp = tmp / 10 去掉末位)。
    • 计算各位数字的立方和(r += pow(tmp % 10, 3)),判断 r 是否等于原数 i
  3. 输出格式:逐个输出符合条件的水仙花数 i
#include <iostream>
#include <cmath>
using namespace std;int main()
{for(int i = 100; i <= 999; i++){int tmp = i;int r = 0;while(tmp){r += pow(tmp % 10, 3);tmp /= 10;}if(r == i)cout << i << endl;}return 0;
}

在这里插入图片描述


以上就是这篇博客的全部内容,下一篇我们将继续探索C++算法的更多精彩内容。

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的C++算法竞赛篇文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_13001405.html?spm=1001.2014.3001.5482

非常感谢您的阅读,喜欢的话记得三连哦

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Gradio全解8——ChatInterfaceChatbot:聊天界面类与聊天机器人(3)——ChatInterface的多模态功能与附加输入输出

Gradio全解8——ChatInterface&Chatbot&#xff1a;聊天界面类与聊天机器人&#xff08;3&#xff09;——ChatInterface的多模态功能与附加输入输出8.3 ChatInterface的多模态功能与附加输入输出8.3.1 多模态功能1. 设置multimodal和fn参数2. 传入MultimodalTextbox组件及…

php算法-- 关联数组使用,优化sip账号去重

文章目录1 变量定义2. 核心特性code1 变量定义 类型&#xff1a;嵌套的关联数组&#xff08;Nested Associative Array&#xff09;外层结构&#xff1a;[中继ID > 账号列表]键 (Key)&#xff1a;中继ID&#xff08;字符串或整型&#xff09;值 (Value)&#xff1a;索引数组…

LLM 多语言数据集

多语言数据感觉主要还是fineweb和fineweb2, 其他数据都是主要针对特定语种比较多 101 Billion Arabic Words Dataset ClusterlabAi/101_billion_arabic_words_dataset 数据主要从e Common Crawl WET 中提取&#xff0c;并采用了创新的技术来进行去重和筛选&#xff0c;主要解决…

【HarmonyOS Next之旅】DevEco Studio使用指南(三十六) -> 配置构建(三)

目录 1 -> 定制HAR多目标构建产物 1.1 -> 定义产物的deviceType 1.2 -> 定义C工程依赖的.so文件 1.3 -> 定义产物的资源 2 -> 配置APP多目标构建产物 2.1 -> 定义产物的APP包名和供应商名称 2.2 -> 定义product的bundleName 2.3 -> 定义produc…

数据赋能(340)——技术平台——共享平台

概述重要性如下&#xff1a;提高数据利用效率&#xff1a;数据共享平台能够将分散在各部门的数据进行集中管理&#xff0c;促进数据流通和共享&#xff0c;避免数据孤岛现象&#xff0c;从而提高数据利用效率。促进决策科学化&#xff1a;通过共享平台&#xff0c;各部门可以获…

开闭原则在C++中的实现

开闭原则&#xff08;Open/Closed Principle&#xff0c;简称 OCP&#xff09;是面向对象设计中的一个重要原则&#xff0c;属于“SOLID”原则之一。它的核心思想是&#xff1a;“软件实体&#xff08;如类、模块、函数等&#xff09;应该对扩展开放&#xff0c;对修改关闭。”…

C语言:*p++与p++有何区别

1. 指针基础练习&#xff1a;演示p、p和(*p)的区别核心目的&#xff1a;区分指针自增与指针指向值自增的不同逻辑&#xff0c;理解运算符优先级对指针操作的影响。#include <stdio.h>void arr1() {int arr[] {11,13,15,17,19};int *p arr;printf("结果1&#xff1…

【设计】设计一个web版的数据库管理平台后端(之二)

在之前&#xff0c;我写过一篇【设计】设计一个web版的数据库管理平台后端精要 的文章&#xff0c;文章讲了一个web版数据库管理平台的实现思路及主要代码。 最近&#xff0c;我看了下Mybatis的源码&#xff0c;觉得Mybatis的分层架构挺好&#xff0c;所以想到了完善下web版数据…

Visual tudio 各版本下 C++ 开发的核心区别与实践指南

C语言的发展经历了数十年的演进&#xff0c;从 C98 到现代的 C20/23&#xff0c;语言本身发生了巨大的变革。与此同时&#xff0c;Visual Studio 作为主流的 C 开发环境之一&#xff0c;其编译器对各个 C 标准的支持程度也随版本不断演进&#xff0c;直接影响着开发者的编程方式…

怎样让阿里云服务器(centos)有界面

要让阿里云服务器 CentOS 有图形界面&#xff0c;可以按照以下步骤进行操作&#xff1a;登录服务器&#xff1a;使用 SSH 客户端工具&#xff0c;通过 IP 地址和账号登录到阿里云服务器。更新系统软件源&#xff1a;输入命令sudo yum update&#xff0c;更新系统软件源&#xf…

Qt 异步编程模式与应用

在现代软件开发中&#xff0c;异步编程已成为提升应用性能和响应性的关键技术。Qt 作为一个强大的跨平台框架&#xff0c;提供了多种异步编程模式&#xff0c;包括信号槽机制、事件循环、线程池、异步 I/O 等。本文将深入探讨 Qt 异步编程的各种模式及其应用场景&#xff0c;帮…

面试150 数字范围按位与

思路 只要 left < right&#xff0c;说明两者在某些低位上存在不同&#xff0c;为了找到它们的公共前缀&#xff08;高位相同部分&#xff09;&#xff0c;不断将 left 和 right 同时右移&#xff08;即除以2&#xff09;&#xff0c;直到它们相等&#xff0c;记录右移的次数…

数据库HB OB mysql ck startrocks, ES存储特点,以及应用场景

这些数据库和存储引擎主要有:HB(HBase)、OB(OceanBase)、MySQL、ClickHouse(CK)、StarRocks、Elasticsearch(ES),下面分别介绍它们的存储特点以及典型应用场景。 1. HBase (HB) 存储特点 分布式、面向列的NoSQL数据库 采用HDFS存储,数据以表、row key、列族、时间戳…

Java技术栈/面试题合集(17)-Git篇

场景 Java入门、进阶、强化、扩展、知识体系完善等知识点学习、性能优化、源码分析专栏分享: Java入门、进阶、强化、扩展、知识体系完善等知识点学习、性能优化、源码分析专栏分享_java高级进阶-CSDN博客 通过对面试题进行系统的复习可以对Java体系的知识点进行查漏补缺。…

破局与重构:King’s LIMS 引领电子行业实验室智能化转型

在全球化高新技术竞争白热化背景下&#xff0c;电子行业正经历从规模导向扩张向质量效益跃升的战略转型。终端用户对产品性能的极致化追求、行业质量合规标准的持续迭代升级&#xff0c;以及检测数据的指数级增长&#xff0c;共同形成"需求牵引供给、供给创造需求"的…

暑期算法训练.9

目录 43 .力扣75 颜色分类 43.1 题目解析&#xff1a; 43.2 算法思路&#xff1a; 43.3 代码演示&#xff1a; 43.4 总结反思&#xff1a; 44. 力扣 912 排序数组 44.1 题目解析&#xff1a; 44.2 算法思路&#xff1a; 44.3 代码演示&#xff1a; ​编辑 44.4 总结反…

2.安装CUDA详细步骤(含安装截图)

2.安装CUDA 第一步&#xff1a;安装anaconda 注意&#xff1a;安装CUDA之前需要安装好anaconda&#xff0c;详见安装anaconda详细步骤&#xff08;含安装截图&#xff09; 文章目录2.安装CUDA2.0 CUDA是什么&#xff0c;为什么要安装它&#xff1f;2.1 验证计算机是否安装CUDA2…

Triton IR

Triton IR语法 Triton IR的语句遵从MLIR Dialect的语法定义规范&#xff0c;示例如下&#xff1a; %3 tt.splat %1 : i32 -> tensor<1024xi32> loc(#loc5) 其中&#xff1a; %0&#xff1a;右边expression的结果值的名字&#xff08;Value的name&#xff09; tt…

掌握JavaScript函数封装与作用域

JavaScript 基础 - 第4天笔记理解封装的意义&#xff0c;能够通过函数的声明实现逻辑的封装&#xff0c;知道对象数据类型的特征&#xff0c;结合数学对象实现简单计算功能。理解函数的封装的特征掌握函数声明的语法理解什么是函数的返回值知道并能使用常见的内置函数函数理解函…

Datawhale AI 夏令营—科大讯飞AI大赛(大模型技术)—让大模型理解表格数据(列车信息表)

目录 一、本次赛事目标&#xff1a;让大模型理解表格数据&#xff08;列车信息表&#xff09; 二、分析赛题、对问题进行建模 赛事背景 赛题解读 数据分析与探索 赛题要点与难点 解题思考过程 三、Baseline方案 Baseline概况 Baseline运行步骤 Baseline文件概况 Ba…