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.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…