2021年藍橋杯第十二屆CC++大學B組真題及代碼

目錄

1A:空間(填空5分_單位轉換)

2B:卡片(填空5分_模擬)

3C:直線(填空10分_數學+排序)

4D:貨物擺放(填空10分_質因數)

5E:路徑(填空15分_最短路)

6F:時間顯示(編程題15分)

解析代碼(模擬)

7G:砝碼稱重(編程題20分)

解析代碼(01背包dp)

8H:楊輝三角形(編程題20分)

解析代碼(找規律)

9I:雙向排序(編程題25分)(待續)

10J:括號序列(編程題25分)(待續)


1A:空間(填空5分_單位轉換)

答案:67108864


#include <iostream>
using namespace std;int main()
{// A題:256MB存多少個32位二進制整數(4bit)// 256MB = 256 * 1024 KB = 256 * 1024 * 1024 B = 256 * 1024 * 1024 * 8 bitcout << 256 * 1024 * 1024 * 8 / 32 << endl;cout << 256 * 1024 * 1024 / 4 << endl;return 0;
}
// 答案67108864

2B:卡片(填空5分_模擬)

答案:3181



#include <iostream>
#include <vector>
using namespace std;vector<int> arr(10, 2021);bool chick(int x)
{while (x){int tmp = x % 10;if (--arr[tmp] < 0)return false;x /= 10;}return true;
}int main()
{for (int i = 1; ; ++i){if (!chick(i)) // 如果拼不出來{cout << i - 1 << endl;return 0;}}return 0;
}
// 答案3181

3C:直線(填空10分_數學+排序)

答案:40257


// C:直線
// 大致思路:依次枚舉各個點,每兩個點生成對應的斜率和截距。最后看有多少個不同的組合,即有多少條不同的直線
// 注意事項:類型為double的兩個數值a和b,即使數值相同,對應的double值也有可能不同,
// 故在cpp中比較兩個double值應判斷其abs之差是否在很小的一個范圍之內,例如1e-8
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
const int N = 200000; // 直線的最大數
int n = 0;
struct Line
{double k;double b;// 結構體內嵌排序函數// 直接寫比較函數是裸的len表示當前的值,如果len<a.len,那么就是從小到大排序。// 括號中的const表示參數a對象不會被修改,最后的const表明調用函數對象不會被修改// sort默認為從小到大排序,優先隊列默認為從大到小。bool operator < (const Line& t) const  //重載<操作符。可以對兩個node使用<操作符進行比較{if (k != t.k)  // k不同的話,k小的在前return k < t.k;return b < t.b; // k相同的話,b小的在前}
}l[N];int main()
{//枚舉一下所有的點對for (int x1 = 0; x1 < 20; ++x1){for (int y1 = 0; y1 < 21; ++y1){for (int x2 = 0; x2 < 20; ++x2){for (int y2 = 0; y2 < 21; ++y2){if (x1 != x2)//避免斜率不存在的情況,總共20條豎線{double k = (double)(y2 - y1) / (x2 - x1);double b = y2 - k * x2;l[n++] = { k,b }; // 存數對}}}}}sort(l, l + n);int res = 1;for (int i = 1; i < n; ++i) // 找出截率和斜率不等的就是不同數{if (fabs(l[i].k - l[i - 1].k) > 1e-8 || fabs(l[i].b - l[i - 1].b) > 1e-8)++res;}cout << res + 20 << endl; // 加上不存在斜率的20條豎線return 0;
}
// 答案40257

4D:貨物擺放(填空10分_質因數)


? ? ? ? 思路:先獲得2021041820210418所有質因數(所以質因數也就一百多個),再通過質因數去組合從而獲得所有的正約數,最后只需在所有的正約數找3個乘積為2021041820210418就行。

答案:2430

#include <iostream>
#include <vector>using namespace std;
#define int long long
#define endl '\n'
// n比較大,會爆因子signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int n = 2021041820210418;vector<int> v;for (int i = 1; i * i <= n; i++) // 得到n的所有約數{if (n % i == 0){v.push_back(i);if (n / i != i)v.push_back(n / i);}}//cout << v.size() << endl;int res = 0;for (auto& a : v) //枚舉一下a b c{for (auto& b : v){for (auto& c : v){if (a * b * c == n)++res;}}}cout << res << endl;return 0;
}
// 答案:2430

5E:路徑(填空15分_最短路)

求最短路的問題,答案是1026837


6F:時間顯示(編程題15分)


解析代碼(模擬)

需要注意的是1秒等于1000毫秒,不需要輸出毫秒,一開始先除等1000。

#include <iostream>
using namespace std;
#define endl '\n'signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);long long n;cin >> n;//1s=1000ms,先去除毫秒n /= 1000;// 每一天秒數24*60*60==86400s,取得到最后一天的秒數n %= (24 * 60 * 60);int h = n / 3600; // 小時n %= 3600; // 得到最后一天除了時以外的秒數int m = n / 60; //分鐘int s = n % 60; //秒printf("%02d:%02d:%02d\n", h, m, s);return 0;
}
// 46800999
// 1618708103123

7G:砝碼稱重(編程題20分)


解析代碼(01背包dp)

#include <bits/stdc++.h>
#include <iostream>using namespace std;
#define endl '\n'
#define int long long// -m<=j<=m
const int N = 110, M = 200010, OFFSET = M / 2;int n, sum; // n代表總選擇數,sum代表所有砝碼總重量
int w[N]; // 存重量的數組
bool dp[N][M];
// dp:狀態表示f(i,j)-->集合:只從前i個物品中選,且總重量為j的所有方案的集合;屬性:是否為true
// 狀態計算:不選wi -> dp(i-1,j))、選+wi -> dp(i-1,j-wi)、選-wi ->dp(i-1,j+wi)
signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> n;for (int i = 1; i <= n; ++i){cin >> w[i];sum += w[i];}dp[0][OFFSET] = true; // j可能是負數,都要加一個偏移量(足夠大的數)for (int i = 1; i <= n; ++i){for (int j = -sum; j <= sum; ++j) // -sum到sum +sum就從0開始,dp[0][0]初始化為true{dp[i][j + OFFSET] = dp[i - 1][j + OFFSET];if (j - w[i] >= -sum)dp[i][j + OFFSET] |= dp[i - 1][j - w[i] + OFFSET];if (j + w[i] <= sum)dp[i][j + OFFSET] |= dp[i - 1][j + w[i] + OFFSET];}}int res = 0;for (int j = 1; j <= sum; ++j){if (dp[n][j + OFFSET] == true)++res;}cout << res << endl;return 0;
}
/*
3
1 4 6
*/

8H:楊輝三角形(編程題20分)


解析代碼(找規律)

#include <iostream>
#include <cstring>
#define endl '\n'
using namespace std;
const int mod = 1000000007;
const int M = 110;
int dp[M * 2][M][M];signed main()
{memset(dp, 0, sizeof dp); // 0 表示花 1 表示店dp[0][0][2] = 1;int n, m;cin >> n >> m;for (int i = 0; i <= n; ++i){for (int j = 0; j <= m; ++j){for (int k = 0; k <= 101; ++k){if (i == 0 && j == 0)continue;if (i > 0 && !(k & 1)) // 店dp[i][j][k] += dp[i - 1][j][k / 2];if (j > 0) // 花dp[i][j][k] += dp[i][j - 1][k + 1];dp[i][j][k] %= mod;}}}cout << dp[n][m - 1][1];
}

9I:雙向排序(編程題25分)(待續)


10J:括號序列(編程題25分)(待續)

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

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

相關文章

Python入門基礎

python基礎類型轉換 str()與int()類型轉換 name 張三 age 20 print(type(name),type(age))print(我叫name 今年&#xff0c; str(age)歲 )a10 b198.8 cFalse print(type(a),type(b),type(c)) print(str(a),str(b),str(c))s1 128 f198.7 s276.77 ffTrue s3hello print(type(s…

HTTP/HTTPS 中 GET 請求和 POST 請求的區別與聯系

一、基礎概念 HTTP (HyperText Transfer Protocol, 超文本傳輸協議) 是一種用于瀏覽器與服務器之間進行數據交互的協議。HTTPS (加密的 HTTP) 則通過 SSL/TLS 協議實現通信加密與數據安全性。 二、GET 和 POST 概述 GET 請求: 用于從服務器獲取資源。 POST 請求: 用于將數據…

OPENCV數字識別(非手寫數字/采用模板匹配)

這篇文章的重點在于 模板匹配 的使用。模板匹配是計算機視覺中的一項基本技術&#xff0c;它通過比對輸入圖像與模板圖像的相似度&#xff0c;來進行目標識別。對于數字識別&#xff0c;特別是標準數字的識別&#xff0c;模板匹配非常有效。 請看效果&#xff1a; 文章結構 …

在 Kubernetes 中部署 Trivy 漏洞掃描服務

創建專用 Namespace # trivy-ns.yaml apiVersion: v1 kind: Namespace metadata: name: trivy-system配置持久化存儲&#xff08;緩存數據庫&#xff09; apiVersion: v1 kind: PersistentVolumeClaim metadata: name: trivy-db-cache namespace: trivy-system spec: acc…

Cursor安裝注冊+基礎配置+入門實操

一、安裝注冊 官網地址&#xff1a;https://www.cursor.com/ 下載按鈕會根據電腦系統來匹配&#xff0c;點擊對應「Download」按鈕進行下載。完成后&#xff0c;按步驟安裝即可。 安裝完成后&#xff0c;即可點擊圖標打開軟件。 基礎設置完成后&#xff0c;就需要選擇注冊賬號…

秒殺業務優化之從分布式鎖到基于消息隊列的異步秒殺

一、業務場景介紹 優惠券、門票等限時搶購常常出現在各類應用中&#xff0c;這樣的業務一般為了引流宣傳而降低利潤&#xff0c;所以一旦出現問題將造成較大損失&#xff0c;那么在業務中就要求我們對這類型商品嚴格限時、限量、每位用戶限一次、準確無誤的創建訂單&#xff0c…

MiniMax GenAI 可觀測性分析:基于阿里云 SelectDB 構建 PB 級別日志系統

“阿里云SelectDB作為MiniMax日志存儲服務的核心支撐&#xff0c;為在線和離線業務提供了高效、穩定的查詢與聚合分析能力。其支持實時物化視圖、租戶資源隔離、冷熱分離等企業級特性&#xff0c;不僅有效解決了日志場景下PB級別數據查詢的性能瓶頸&#xff0c;還通過智能化的資…

【YOLO V3】目標檢測 Darknet 訓練自定義模型

【YOLO V3】目標檢測 Darknet 訓練自定義模型 前言整體思路環境檢查與依賴配置克隆 YOLOv3 Darknet 并編譯Clone Darknet 項目文件修改 Makefile 文件修改模型保存頻率項目編譯 準備數據集配置訓練文件數據集&#xff1a;datasets &#xff08;自制&#xff09;權重文件 yolov3…

Kafka分區分配策略詳解

Kafka分區分配策略詳解 Kafka作為當前最流行的分布式消息隊列系統&#xff0c;其分區分配策略直接影響著系統的性能、可靠性和可擴展性。合理的分區分配不僅能夠提高數據處理的效率&#xff0c;還能確保系統負載的均衡。 Kafka提供了多種內置的分區分配策略&#xff0c;包括R…

C#中 String類API(函數)

字符串屬性 string str "打工人";Console.WriteLine(str);char s str[0];Console.WriteLine(s); 字符串內置API(函數) 1. Concat 拼接字符串 string s1 "打";string s2 "工";string s3 "人";string sthstring.Concat(s1, s2, s…

JavaScript性能優化實戰手冊:從V8引擎到React的毫秒級性能革命

目錄 一、性能優化的本質挑戰1.1 瀏覽器渲染管線的性能瓶頸2.1 內存管理優化2.2 執行效率優化2.3 網絡傳輸優化 三、React框架深度調優3.1 渲染性能優化3.2 性能監控體系 四、企業級優化案例4.1 電商平臺首頁優化4.2 數據可視化大屏優化 五、新一代性能優化技術5.1 WASM性能突破…

【PostgreSQL】pg各版本選用取舍邏輯與docker安裝postgres:15

企業常用 PostgreSQL 版本推薦 1. PostgreSQL 14&#xff08;最常見&#xff0c;穩定&#xff09; 目前許多企業仍在使用 PostgreSQL 14&#xff0c;因為它在性能、并發處理、JSON 支持等方面做了較多優化&#xff0c;同時又非常穩定。官方支持時間&#xff1a;2026 年 11 月…

DeepSeek 助力 Vue3 開發:打造絲滑的表格(Table)之添加導出數據功能

前言:哈嘍,大家好,今天給大家分享一篇文章!并提供具體代碼幫助大家深入理解,徹底掌握!創作不易,如果能幫助到大家或者給大家一些靈感和啟發,歡迎收藏+關注哦 ?? 目錄 DeepSeek 助力 Vue3 開發:打造絲滑的表格(Table)之添加導出數據功能??頁面效果??指令輸入?…

《Python實戰進階》第31集:特征工程:特征選擇與降維技術

第31集&#xff1a;特征工程&#xff1a;特征選擇與降維技術 摘要 特征工程是機器學習和數據科學中不可或缺的一環&#xff0c;其核心目標是通過選擇重要特征和降低維度來提升模型性能并減少計算復雜度。本集聚焦于特征選擇與降維技術&#xff0c;涵蓋過濾法、包裹法、嵌入法等…

避雷 :C語言中 scanf() 函數的錯誤?使用!!!

1. 返回值說明 scanf函數會返回成功匹配并賦值的輸入項個數&#xff0c;而不是返回輸入的數據。 可以通過檢查返回值數量來確認輸入是否成功。若返回值與預期不符&#xff0c;就表明輸入存在問題。 #include <stdio.h>int main() {int num;if (scanf("%d", …

Excel第41套全國人口普查

2. 導入網頁中的表格&#xff1a;數據-現有鏈接-考生文件夾&#xff1a;網頁-找到表格-點擊→變為√-導入刪除外部鏈接關系&#xff1a;數據-點擊鏈接-選中連接-刪除-確定&#xff08;套用表格格式-也會是刪除外部鏈接&#xff09;數值縮小10000倍&#xff08;除以10000即可&am…

WPS宏開發手冊——使用、工程、模塊介紹

目錄 系列文章前言1、開始1.1、宏編輯器使用步驟1.2、工程1.3、工程 系列文章 使用、工程、模塊介紹 JSA語法 第三篇練習練習題&#xff0c;持續更新中… 前言 如果你是開發人員&#xff0c;那么wps宏開發對你來說手拿把切。反之還挺吃力&#xff0c;需要嘻嘻&#xf…

EtherCAT轉CANopen配置CANopen側的PDO映射

EtherCAT轉CANopen配置CANopen側的PDO映射 在工業自動化領域&#xff0c;EtherCAT和CANopen是兩種廣泛應用的通信協議。它們各自具有獨特的優勢&#xff0c;但在某些應用場景下&#xff0c;需要將這兩種協議進行轉換以實現設備間的高效數據交換。本文將詳細介紹如何在使用Ethe…

【QT】Qt creator快捷鍵

Qt creator可以通過以下步驟快捷鍵査看調用關系&#xff1a; 1.打開代碼文件。 2.將光標放在你想要查看調用關系的函數名上。 3.按下鍵盤快捷鍵 CtrlshiftU。 4.彈出菜單中選擇“調用路徑”或“被調用路徑” 5.在彈出的窗口中可以查看函數的調用關系 折疊或展開代碼快捷鍵&…

【RHCE】LVS-NAT模式負載均衡實驗

目錄 題目 IP規劃 配置IP RS1 RS2 RS3 LVS client 配置RS 配置LVS 安裝lvs軟件 啟動ipvsadm服務 lvs規則匹配 ipvsadm部分選項 客戶端測試 總結 題目 使用LVS的 NAT 模式實現 3 臺RS的輪詢訪問&#xff0c;IP地址和主機自己規劃。 IP規劃 主機IP地址RS1-nat模…