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

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

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.lryc.cn/news/601689.html

相关文章:

  • 港股历史逐笔成交与分时十档买卖盘口数据深度解析
  • 标签驱动的可信金融大模型训练全流程-Agentar-Fin-R1工程思路浅尝
  • unity开发中Hash、Queue、LinkedList简单介绍
  • PandasAI连接LLM进行智能数据分析
  • LLM 多语言数据集
  • 《Java 程序设计》第 7 章 - 继承与多态
  • 9. 桥接模式
  • 递归查询美国加速-技术演进与行业应用深度解析
  • Cursor下利用Stagewise实现 “所见即改” 的前端开发体验~
  • MyBatis-Plus IService 接口全量方法实现与测试(续)
  • 【程序员私房菜】python尖椒炒口蘑
  • 神经网络模型训练需要的内存大小计算方法
  • 任务提醒工具怎么选?对比16款热门软件
  • 疯狂星期四文案网第21天运营日记
  • 商汤发布具身智能平台,让机器人像人一样和现实世界交互
  • EMCCD相机与电可调变焦透镜的同步控制系统设计与实现
  • Chainlink Functions:为智能合约插上连接现实世界的翅膀
  • PowerDesigner 画ER图并生成sql 教程
  • 青少年编程能力等级测评试卷及答案 Python编程(三级)
  • Rouge:面向摘要自动评估的召回导向型指标——原理、演进与应用全景
  • Java面试全方位解析:从基础到AI的技术交锋
  • 如何思考一个动态规划问题需要几个状态?
  • 负载均衡 LoadBalance
  • 阻止网页重定向
  • 6、企业信息化
  • 齐护Ebook科技与艺术Steam教育套件 可图形化micropython Arduino编程ESP32纸电路手工
  • 装修独栋别墅需要注意的细节有哪些?
  • 像素农场播种机-作物模拟器HTML+CSS+JavaScript
  • Linux 系统网络配置及 IP 地址相关知识汇总
  • JVM terminated. Exit code=1