C++藍橋杯填空題(攻克版)

片頭

嗨~小伙伴們,咱們繼續攻克填空題,先把5分拿到手~


第1題? 數位遞增的數

這道題,需要我們計算在整數 1 至?n?中有多少個數位遞增的數。

什么是數位遞增的數呢?一個正整數如果任何一個數位不大于右邊相鄰的數位。比如:1234是一個數位遞增的數;4321則不是。

解題思路:我們可以把1~n個數全部轉化為字符串類型。用另外一個字符串類型的變量s來保存。再對當前這個字符串進行排序(排升序)。如果二者相同,那么該數是數位遞增的數。

#include <bits/stdc++.h>  // 包含所有標準庫頭文件
using namespace std;      // 使用標準命名空間
int main()
{int n;cin >> n;  // 從標準輸入讀取一個整數nint ans = 0;  // 初始化計數器ans為0,用于統計符合條件的數字個數for(int i = 1; i <= n; i++)  // 遍歷從1到n的每個數字{string s = to_string(i);    // 將當前數字i轉換為字符串形式string s1 = s;              // 創建字符串s的副本s1sort(s1.begin(), s1.end()); // 對s1中的字符按升序排序if(s == s1) ans++;          // 如果原字符串s與排序后的s1相同,說明數字是升序排列的}cout << ans << endl;        // 輸出符合條件的數字個數return 0;
}

第2題? 數位和

這道題目很簡單,將1~1000所有數字的數位和算出來,累加到變量SUM中,就可以了。

#include <iostream>
using namespace std;//求數位和
int get_sum(int x){int temp = x;int sum = 0;while(temp != 0){int r = temp % 10;sum += r;temp /= 10;}return sum;
}int main()
{int SUM = 0;for(int i = 1; i<= 1000; i++){SUM += get_sum(i);}cout << SUM << endl;return 0;
}

第3題? 數位比較

這道題,是給定我們區間范圍,計算滿足數字的數位上的?0 的個數要大于數位上的?1?的個數。

#include <iostream>
using namespace std;int Func(int x) 
{int temp = x;     // 創建臨時變量保存x的值int num1 = 0, num2 = 0; // num1統計0的個數,num2統計1的個數while(temp != 0) {  // 循環處理每一位數字if(temp % 10 == 0) num1++; // 如果當前位是0,num1加1if(temp % 10 == 1) num2++; // 如果當前位是1,num2加1temp /= 10;     // 去掉已處理的最低位}if(num1 > num2) return 1; // 如果0比1多,返回1else return 0;            // 否則返回0
}int main()
{int L, R;        // 定義區間端點變量cin >> L >> R;   // 輸入區間范圍[L, R]int ans = 0;     // 初始化計數器for(int i = L; i <= R; i++) {  // 遍歷區間內每個數字if(Func(i) == 1) ans++;    // 如果滿足條件,計數器加1}cout << ans << endl; // 輸出結果return 0;
}

第4題? 最小數位和

這道題,雖然數據量比較大,但是我們不要被題目唬住了。

解題思路:①可以定義8行8列的二維數組存儲64個數據。

    int a[8][8] = {{454771,329157,801601,580793,755604,931703,529875,361797},{604358,529564,574776,821517,195563,688516,223321,607845},{284772,603562,543328,707484,533688,380468,233733,257995},{896582,670074,912386,702393,722092,834842,126346,606526},{376981,910643,413754,945725,817853,651778,350775,676550},{316935,487808,939526,900568,423326,298936,927671,539773},{136326,717022,886675,466684,436470,558644,267231,902422},{743580,857864,529622,320921,595409,486860,951114,558787}};

?②題目問我們數位和最小的數,咱們先實現一個求數位和的函數。

//求數位和
int get_sum(int a) {int sum = 0;int temp = a;while (temp != 0) {int r = temp % 10;sum += r;temp /= 10;}return sum;
}

接著我們可以在main函數中調用get_sum函數。

定義變量min,初始值為INT_MAX(需要引用頭文件 <climits>,但是 <bits/stdc++.h>?已經包含了)。

從第1行第1列,也就是從第1個元素(a[0][0])開始遍歷,依次計算每個數的數位和,保存到變量d中。如果當前的數位和d<min,那么將d賦給min (min = d),同時用另一個變量num保存當前的數。

    int min = INT_MAX;  // 初始化最小和為最大整數值int num = 0;        // 存儲數字和最小的那個數int d = 0;          // 臨時存儲數字和// 遍歷二維數組for (int i = 0; i < 8; i++) {for (int j = 0; j < 8; j++) {d = get_sum(a[i][j]);  // 計算當前數的數字和if (d < min) {         // 如果比當前最小值小min = d;           // 更新最小值num = a[i][j];     // 更新對應的數}}}

最后輸出數位和最小的數

    cout << num << endl;  // 輸出結果

ok,本道題的完整代碼如下:

#include <bits/stdc++.h>
using namespace std;//求數位和
int get_sum(int a){int sum = 0;int temp = a;while(temp != 0){int r = temp % 10;sum += r;temp /= 10;}return sum;
}int main()
{int a[8][8] = {{454771,329157,801601,580793,755604,931703,529875,361797},{604358,529564,574776,821517,195563,688516,223321,607845},{284772,603562,543328,707484,533688,380468,233733,257995},{896582,670074,912386,702393,722092,834842,126346,606526},{376981,910643,413754,945725,817853,651778,350775,676550},{316935,487808,939526,900568,423326,298936,927671,539773},{136326,717022,886675,466684,436470,558644,267231,902422},{743580,857864,529622,320921,595409,486860,951114,558787}};int min = INT_MAX;  // 初始化最小和為最大整數值int num = 0;        // 存儲數字和最小的那個數int d = 0;          // 臨時存儲數字和// 遍歷二維數組for (int i = 0; i < 8; i++) {for (int j = 0; j < 8; j++) {d = get_sum(a[i][j]);  // 計算當前數的數字和if (d < min) {         // 如果比當前最小值小min = d;           // 更新最小值num = a[i][j];     // 更新對應的數}}}cout << num << endl;  // 輸出結果return 0;
}

第5題? 數位和相等

題目讓我們求第23個數位和相等的正整數,數位和相等:一個正整數轉化成二進制與轉換成八進制后所有數位的數字之和相等。

定義變量count(計數器),表示滿足條件的第幾個數;定義變量i,初始值為1,從1開始檢查數字。

沒有給定循環范圍,因此我們采用while循環。因為求第23個數位和相等的數,如果count從0開始,那么到22結束;如果count從1開始,那么到23結束。

    int i = 1;     // 從1開始檢查數字int count = 0; // 計數器,記錄滿足條件的數字個數while(count < 23)  //count的取值范圍: 0~22,總共23個數{if(S(i)) count++; // 如果i滿足條件,計數器加1i++;              // 檢查下一個數字}

當count==23時,退出while循環。但是此時 i 已經自增,因此需要輸出 i-1。

  // 注意:此時i已經自增過了,所以要輸出i-1cout << i-1 << endl;

接下來我們需要實現S函數,判斷1個數的二進制和八進制的數位和是否相同。

int S(int N) {if (N <= 0)  return 0;  // 處理非正整數int sum2 = 0, sum8 = 0;   // sum2存儲二進制和,sum8存儲八進制和int temp = N;             // 臨時變量保存N的值//計算二進制各位和while (temp != 0){int r = temp % 2;   // 取二進制最后一位sum2 += r;          // 累加到sum2temp /= 2;          // 去掉已處理的最后一位}temp = N;  // 重置temp為原始值//計算八進制各位和while (temp != 0){int ge = temp % 8;    // 取八進制最后一位sum8 += ge;temp /= 8;}if (sum2 == sum8) return 1;  // 和相等返回1else return 0;               // 不等返回0
}

歐克啦,本題的完整代碼如下:

#include <iostream>
using namespace std;int S(int N) {if (N <= 0)  return 0;  // 處理非正整數int sum2 = 0, sum8 = 0;   // sum2存儲二進制和,sum8存儲八進制和int temp = N;             // 臨時變量保存N的值//計算二進制各位和while (temp != 0){int r = temp % 2;   // 取二進制最后一位sum2 += r;          // 累加到sum2temp /= 2;          // 去掉已處理的最后一位}temp = N;  // 重置temp為原始值//計算八進制各位和while (temp != 0){int ge = temp % 8;    // 取八進制最后一位sum8 += ge;temp /= 8;}if (sum2 == sum8) return 1;  // 和相等返回1else return 0;               // 不等返回0
}int main()
{int i = 1;     // 從1開始檢查數字int count = 0; // 計數器,記錄滿足條件的數字個數while (count < 23)  //count的取值范圍: 0~22,總共23個數{if (S(i)) count++; // 如果i滿足條件,計數器加1i++;               // 檢查下一個數字}// 注意:此時i已經自增過了,所以要輸出i-1cout << i - 1 << endl;return 0;
}

第6題???數位計數

這道題,很簡單。統計1個數一共有多少個數位。n的范圍比較大,因此我們可以用 long long 來定義。

#include <iostream>
using namespace std;
typedef long long ll;ll get_count(ll x){ll temp = x;ll count = 0;while(temp != 0){temp = temp / 10;count++;  //統計數位個數}return count;
}int main()
{ll n;cin >> n;ll ret = get_count(n);cout << ret << endl;return 0;
}

第7題? 數位和

首先,題目給定范圍:①質數,因此我們需要實現判斷是否為質數的函數;?②計算質數的各個數位之和,判斷是否等于23。我們需要實現計算數位和的函數。

判斷是否為質數的代碼如下:

//判斷是否為質數
bool is_prime(int x)
{//這里必須是 i < sqrt(x), 不然編譯報錯for(int i = 2; i < sqrt(x) ; i++){if(x % i == 0) return 0; //不是質數,返回0}return 1;//只能被 1 和本身整除,是質數,返回1
}

需要額外注意:質數判斷應從2開始,且只需檢查到\sqrt{x}即可

計算數位和的函數如下:

//計算數位和
int get_sum(int x)
{int temp = x;int sum = 0;while (temp != 0){int r = temp % 10;sum += r;temp /= 10;}return sum;
}

最后在main函數里面調用這2個函數即可。

  //計數器,統計滿足條件的數的個數int cnt = 0;for(int i = 3; i <= 1000000; i++){//如果該數為質數并且數位之和為23,計數器+1if(is_prime(i) && get_sum(i) == 23) cnt++; }cout << cnt <<endl; //輸出結果

歐克啦,本題完整代碼如下:

#include <bits/stdc++.h>
using namespace std;//判斷是否為質數
bool is_prime(int x)
{//這里必須是 i < sqrt(x), 不然編譯報錯for(int i = 2; i < sqrt(x) ; i++){if(x % i == 0) return 0;}return 1;
}//計算數位和
int get_sum(int x)
{int temp = x;int sum = 0;while(temp != 0){int r = temp % 10;sum += r;temp /= 10;}return sum;
}int main()
{//計數器,統計滿足條件的數的個數int cnt = 0;for(int i = 3; i <= 1000000; i++){//如果該數為質數并且數位之和為23,計數器+1if(is_prime(i) && get_sum(i) == 23) cnt++; }cout << cnt <<endl; //輸出結果return 0;
}

第8題? 倍數

這道題很簡單,代碼如下:

#include <iostream>
using namespace std;
int main()
{int cnt = 0;for(int i = 1; i <= 2020; i++){if(i % 4 == 0 && i % 6 == 0) cnt++;}cout << cnt << endl;return 0;
}

第9題? 約數

代碼如下:

#include <iostream>
using namespace std;
int main()
{int cnt = 0;for (int i = 1; i <= 2020; i++) {if (2020 % i == 0) cnt++;}cout << cnt << endl;return 0;
}

?第10題? 公約數

代碼如下:

#include <iostream>
using namespace std;
int main()
{int cnt = 0;for (int i = 1; i <= 2020; i++) {if (2020 % i == 0 && 3030 % i == 0) cnt++;}cout << cnt << endl;return 0;
}

?第11題??約數個數

代碼如下:

#include <iostream>
using namespace std;int main()
{int n = 1200000;int ans = 0;for (int i = 1; i <= n; i++) {if (n % i == 0) ans++;}cout << ans;return 0;
}

片尾

今天我們鞏固了填空題基礎,希望看完這篇文章對友友們有所幫助!!!

點贊收藏加關注!!!

謝謝大家!!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/900905.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/900905.shtml
英文地址,請注明出處:http://en.pswp.cn/news/900905.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Python】數據結構

【Python】數據結構&#xff1a; Series&#xff1a;1、通過列表創建Series類對象2、顯示地給數據指定標簽索引3、通過字典創建Series類對象4、獲取索引5、獲取數據 DataFrame&#xff1a;1、通過數組創建一個DataFrame類對象2、指定列索引3、指定行索引4、獲取列的數據5、查看…

Android XML布局與Compose組件對照手冊

下面我將詳細列出傳統 XML 布局中的組件與 Compose 組件的對應關系&#xff0c;幫助您更好地進行遷移或混合開發。 基礎布局對應 XML 布局Compose 組件說明LinearLayout (vertical)Column垂直排列子項LinearLayout (horizontal)Row水平排列子項FrameLayoutBox層疊子項Relativ…

云原生運維在 2025 年的發展藍圖

隨著云計算技術的不斷發展和普及&#xff0c;云原生已經成為了現代應用開發和運維的主流趨勢。云原生運維是指在云原生環境下&#xff0c;對應用進行部署、監控、管理和優化的過程。在 2025 年&#xff0c;云原生運維將迎來更加廣闊的發展前景&#xff0c;同時也將面臨著一系列…

js day5

復習模板字符串&#xff1a; 在輸出語句里面 document.write(我今年${a}歲了)中間是反引號&#xff1b;里面是${變量}&#xff1b; 復習基本類型 number String null undefined boolean 檢測數據類型輸出typedf 變量則可&#xff1b; 添加鏈接描述 復習樣式變量table什么的邊…

SmolVLM2: The Smollest Video Model Ever(三)

這是對《SmolLM2: When Smol Goes Big — Data-Centric Training of a Small Language Model》的翻譯閱讀 摘要 雖然大語言模型在人工智能的許多應用中取得了突破&#xff0c;但其固有的大規模特性使得它們在計算上成本高昂&#xff0c;并且在資源受限的環境中部署具有挑戰性。…

汽車軟件開發常用的需求管理工具匯總

目錄 往期推薦 DOORS&#xff08;IBM &#xff09; 行業應用企業&#xff1a; 應用背景&#xff1a; 主要特點&#xff1a; Polarion ALM&#xff08;Siemens&#xff09; 行業應用企業&#xff1a; 應用背景&#xff1a; 主要特點&#xff1a; Codebeamer ALM&#x…

爬蟲工程師雜活工具人

30歲的年齡;這個年齡大家都是成年人;都是做父母的年齡了;你再工位上的心態會發生很大變化的; 爬蟲工程師基本都是如此;社會最low的一幫連銷售都做不了的;單子都開不出來的然后轉行做爬蟲工程師的;這樣的人基本不太和社會接觸; 你作為爬蟲初級工程師就敲著鍵盤然后解析著html;…

如何使用Tomcat

1 簡介 Tomcat是Apache 軟件基金會&#xff08;Apache Software Foundation&#xff09;的Jakarta 項目中的一個核心項目&#xff0c;由Apache、Sun 和其他一些公司及個人共同開發而成。因為Tomcat 技術先進、性能穩定&#xff0c;而且免費&#xff0c;成為目前比較流行的Web 應…

【AI工具】FastGPT:開啟高效智能問答新征程

前言 在人工智能飛速發展的當下&#xff0c;各類 AI 工具如雨后春筍般涌現。FastGPT 作為一款基于大語言模型&#xff08;LLM&#xff09;的知識圖譜問答系統&#xff0c;憑借其強大的數據處理和模型調校能力&#xff0c;為用戶帶來了便捷的使用體驗。今天&#xff0c;就讓我們…

14. git remote

基本概述 git remote 的作用是&#xff1a;查看、添加、修改和刪除與本地倉庫關聯的遠程倉庫。 基本用法 1.查看遠程倉庫 git remote # 顯示所有關聯的遠程倉庫&#xff08;名稱&#xff09; git remote -v # 顯示所有關聯的遠程倉庫&a…

【spark-submit】--提交任務

Spark-submit spark-submit 是 Apache Spark 提供的用于提交 Spark 應用程序到集群的命令行工具。 基本語法 spark-submit [options] <app-jar> [app-arguments]常用參數說明 應用程序配置 --class <class-name>: 指定應用程序的主類&#xff08;對于 Java/Sc…

2025.4.10總結

今日記錄&#xff1a;今天提了兩個問題單&#xff0c;最近要關注一下產出了&#xff0c;上半年的考核如今還剩兩個月了&#xff0c;然后發現一同入職的同事&#xff0c;有的人進步得很快&#xff0c;得向優秀得同事看齊了&#xff0c;不然幾年過去&#xff0c;別人連升好幾年&a…

SvelteKit 最新中文文檔教程(18)—— 淺層路由和 Packaging

前言 Svelte&#xff0c;一個語法簡潔、入門容易&#xff0c;面向未來的前端框架。 從 Svelte 誕生之初&#xff0c;就備受開發者的喜愛&#xff0c;根據統計&#xff0c;從 2019 年到 2024 年&#xff0c;連續 6 年一直是開發者最感興趣的前端框架 No.1&#xff1a; Svelte …

Winform入門進階企業級開發示例:http接口數據清洗轉換、斷線續傳、mqtt數據傳輸實例詳解(附代碼資源下載)

場景 C#/Winform入門、進階、強化、擴展、知識體系完善等知識點學習、性能優化、源碼分析專欄分享: C#/Winform入門、進階、強化、擴展、知識體系完善等知識點學習、性能優化、源碼分析專欄分享_winform 強化學習-CSDN博客 如何將以上相關理論知識學以致用。下面針對Winform…

Python代碼縮進統一規范

一、Python縮進的重要性:邏輯與可讀性的橋梁 1. 語法規則的核心 Python與其他編程語言顯著不同之處在于,它使用縮進來表示代碼塊的層次結構。不像C、Java等語言依靠大括號{}來明確函數體、循環體和條件語句的范圍,Python完全依賴縮進來界定這些邏輯單元。例如,在一個if條…

asp.net core 項目發布到 IIS 服務器

目錄 一、VS2022 發布 二、設置IIS服務 三、配置IIS管理器 &#xff08;一&#xff09;打開IIS管理器 &#xff08;二&#xff09;添加站臺 &#xff08;三&#xff09;配置應用程式集區 四、安裝ASP.NET Core Hosting Bundle 五、設定IIS的日志位置 六、測試 一、VS2…

spring mvc中不同服務調用類型(聲明式(Feign)、基于模板(RestTemplate)、基于 SDK、消息隊列、gRPC)對比詳解

RestControllerAdvice 和 ControllerAdvice 對比詳解 1. 基本概念 注解等效組合核心作用ControllerAdviceComponent RequestMapping&#xff08;隱式&#xff09;定義全局控制器增強類&#xff0c;處理跨控制器的異常、數據綁定或全局響應邏輯。RestControllerAdviceControll…

CVE-2025-29927 Next.js 中間件鑒權繞過漏洞

Next.js Next.js 是一個基于 React 的現代 Web 開發框架&#xff0c;用來構建高性能、可擴展的 Web 應用和網站。 CVE-2025-29927 Next.js 中間件鑒權繞過漏洞 CVE-2025-29927是Next.js框架中的一個授權繞過漏洞&#xff0c;允許攻擊者通過特制的HTTP請求繞過在中間件中執行…

WP最主題專業的wordpress主題開發

WP最主題&#xff08;wpzui.com&#xff09; WP最主題是一個提供高品質WordPress主題的平臺。它注重主題的設計和功能&#xff0c;旨在為用戶提供美觀且實用的主題選擇。其主題通常具有良好的用戶體驗、豐富的自定義選項以及優化的性能&#xff0c;能夠滿足不同類型的網站搭建…

玩轉代理 IP :實戰爬蟲案例

在現代互聯網環境下&#xff0c;爬蟲不僅是數據獲取的利器&#xff0c;也成為應對網站反爬機制的技術博弈。而在這場博弈中&#xff0c;"代理 IP" 是核心武器之一。本文將以高匿名的代理ip為核心&#xff0c;結合 Python 實戰、代理策略設計、高匿技巧與反封鎖優化&a…