【藍橋杯每日一題】3.16

Alt?

🏝?專欄:?【藍橋杯備篇】
🌅主頁:?f狐o貍x


目錄

3.9 高精度算法

一、高精度加法

? ? ? ? 題目鏈接:

? ? ? ? 題目描述:

????????解題思路:

? ? ? ? 解題代碼:

二、高精度減法

? ? ? ? 題目鏈接:

? ? ? ? 題目描述:

????????解題思路:

? ? ? ? 解題代碼:

三、高精度乘法

? ? ? ? 題目鏈接:

? ? ? ? 題目描述:

????????解題思路:

? ? ? ? 解題代碼:

四、高精度除法

? ? ? ? 題目鏈接:

? ? ? ? 題目描述:

????????解題思路:

? ? ? ? 解題代碼:

3.10 枚舉

一、鋪地毯

? ? ? ? 題目鏈接:

? ? ? ? 題目描述:

????????解題思路:

? ? ? ? 解題代碼:

二、回文日期

? ? ? ? 題目鏈接:

? ? ? ? 題目描述:

????????解題思路:

? ? ? ? 解題代碼:

三、掃雷

? ? ? ? 題目鏈接:

? ? ? ? 題目描述:

????????解題思路:

? ? ? ? 解題代碼:


????????刷題就像打游戲,藍橋杯是終極大BOSS,每天的真題都是小怪——雖然爆率低,但裝備(知識)掉不停!

3.9 高精度算法

? ? ? ? 今天來點有意思的,模擬小學的加減乘除

一、高精度加法

? ? ? ? 題目鏈接:

????????P1601 A+B Problem(高精)

? ? ? ? 題目描述:

????????解題思路:

? ? ? ? 這題我們可以看到a,b這兩個數的值是非常大的(已經超過了long long)因此我們需要自己寫一個加法的代碼,我們可以用一個數組把數字的每一位存起來,在想小學數學那樣一位一位的計算就可以了

? ? ? ? 解題代碼:

#include <iostream>using namespace std;const int N = 1010;int a[N], b[N], c[N];
int la, lb, lc;void add(int c[], int a[], int b[])
{for (int i = 0; i < lc; i++){c[i] += a[i] + b[i];c[i + 1] = c[i] / 10;c[i] %= 10;}if (c[lc]) lc++;
}int main()
{string x, y; cin >> x >> y;// 將數據存入數組la = x.size();lb = y.size();lc = max(la, lb);for (int i = la - 1; i >= 0; i--) a[la - 1 - i] = x[i] - '0';for (int i = lb - 1; i >= 0; i--) b[lb - 1 - i] = y[i] - '0';add(c, a, b);// c = a + bfor (int i = lc - 1; i >= 0; i--) cout << c[i];return 0;
}

二、高精度減法

? ? ? ? 題目鏈接:

????????P2142 高精度減法

? ? ? ? 題目描述:

????????解題思路:

? ? ? ? 這題和上面的高精度加法類似,都是不能簡單的用一個long long 的變量就能搞定的,因此還是需要我們模擬一下小學時候學的減法,列豎式來一個一個算

? ? ? ? 解題代碼:


#include <iostream>using namespace std;const int N = 1e5 + 10;int a[N], b[N], c[N];
int la, lb, lc;bool bigger(string x, string y)
{if (x.size() != y.size()){return y.size() > x.size();}return y > x;
}void sub(int c[], int a[], int b[])
{for (int i = 0; i < lc; i++){c[i] += a[i] - b[i];if (c[i] < 0){c[i + 1]--;c[i] += 10;}}while (1 != lc && c[lc - 1] == 0) lc--;
}int main()
{string x, y; cin >> x >> y;if (bigger(x, y)){swap(x, y);cout << '-';}la = x.size(); lb = y.size(); lc = max(la, lb);for (int i = la - 1; i >= 0; i--) a[la - 1 - i] = x[i] - '0';for (int i = lb - 1; i >= 0; i--) b[lb - 1 - i] = y[i] - '0';sub(c, a, b); // c = a - b;for (int i = lc - 1; i >= 0; i--) cout << c[i];return 0;
}

三、高精度乘法

? ? ? ? 題目鏈接:

????????P1303 A*B Problem

? ? ? ? 題目描述:

????????解題思路:

? ? ? ? 同上,模擬小學列豎式乘法即可

? ? ? ? 才怪,我騙你的,這里為了代碼更加簡潔,我們可以先處理進位,最后在處理,如下圖:

? ? ? ? 解題代碼:

#include <iostream>using namespace std;const int N = 2010;int a[N], b[N], c[N];
int la, lb, lc;void mul(int c[], int a[], int b[])
{for (int i = 0; i < la; i++){for (int j = 0; j < lb; j++){c[i + j] += a[i] * b[j]; // 無進位乘法}}// 處理進位for (int i = 0; i < lc; i++){c[i + 1] += c[i] / 10;c[i] %= 10;}while (lc != 1 && c[lc - 1] == 0) lc--;
}int main()
{string x, y; cin >> x >> y;la = x.size(); lb = y.size(); lc = la + lb;for (int i = la - 1; i >= 0; i--) a[la - 1 - i] = x[i] - '0';for (int i = lb - 1; i >= 0; i--) b[lb - 1 - i] = y[i] - '0';mul(c, a, b);// c = a * b;for (int i = lc - 1; i >= 0; i--) cout << c[i];return 0;
}

四、高精度除法

? ? ? ? 題目鏈接:

????????P1480 A/B Problem

? ? ? ? 題目描述:

????????解題思路:

? ? ? ? 模擬小學除法即可

? ? ? ? 解題代碼:

#include <iostream>using namespace std;typedef long long LL;const int N = 5010;int a[N], c[N];
LL b;
int la, lc;void div(int c[], int a[], LL b)
{LL t = 0;for (int i = lc - 1; i >= 0; i--){t = t * 10 + a[i];c[i] = t / b;t = t % b;}while (lc != 1 && c[lc - 1] == 0) lc--;
}int main()
{string x; cin >> x >> b;la = x.size(); lc = la;for (int i = la - 1; i >= 0; i--) a[la - 1 - i] = x[i] - '0';div(c, a, b); // c = a / bfor (int i = lc - 1; i >= 0; i--) cout << c[i];return 0;
}

3.10 枚舉

? ? ? ? 枚舉,顧名思義就是意義列舉,來吧來吧直接上題目

一、鋪地毯

? ? ? ? 題目鏈接:

????????P1003 [NOIP 2011 提高組] 鋪地毯

? ? ? ? 題目描述:

????????解題思路:

? ? ? ? 因為題目給的數量不大,因此我們可以暴力枚舉,把所有情況全部意義羅列出來,在判斷是否符合題目要求,符合直接返回即可(因為這個題是我們需要我們找到最后一個符合要求的地毯,因此我們可以之后從后往前遍歷來優化代碼)

? ? ? ? 解題代碼:


#include <iostream>using namespace std;const int N = 1e4 + 10;int a[N], b[N], g[N], k[N];int main()
{int n; cin >> n;for (int i = 1; i <= n; i++){cin >> a[i] >> b[i] >> g[i] >> k[i];}int x, y; cin >> x >> y;int flag = 0;for (int i = n; i >= 0; i--){if (a[i] <= x && b[i] <= y &&a[i] + g[i] >= x && b[i] + k[i] >= y){cout << i << endl;flag++;break;}}if (!flag) cout << -1 << endl;return 0;
}

二、回文日期

? ? ? ? 題目鏈接:

????????P2010 [NOIP 2016 普及組] 回文日期

? ? ? ? 題目描述:

????????解題思路:

? ? ? ? 這里可以我們可以直接暴力枚舉從date1 一直枚舉到 date2,然后再一一判斷該日期是否是回文日期,再用一個cnt變量計數就行了。

? ? ? ? 但是這樣的算法會不會太過于浪費呢?這里有另外一個方法:將data1里的year1 枚舉到year2,再判斷日期是否合法即可。

? ? ? ? 但是這樣依然不是最優解,方法二還需要枚舉9999次,這里我們還有法三:將所有日期枚舉出來,在判斷回文的年份是否在題目要求的年份里面

? ? ? ? 解題代碼:

? ? ? ? 這里煮波偷個懶,只寫第第三種方法,前兩種方法大家可以自己去試試

#include <iostream>using namespace std;typedef long long LL;int days[13] = { 0,31,29,31,30,31,30,31,31,30,31,30,31 };int main()
{int date1, date2; cin >> date1 >> date2;int cnt = 0;for (int m = 1; m < 13; m++){for (int d = 1; d <= days[m]; d++){if (date1 <= (((d % 10) * 1000 + (d / 10) * 100 + (m % 10)*10 + m / 10) * 10000 + m * 100 + d) &&date2 >= (((d % 10) * 1000 + (d / 10) * 100 + (m % 10) * 10 + m / 10) * 10000 + m * 100 + d)){cnt++;}}}cout << cnt << endl;return 0;
}

三、掃雷

? ? ? ? 題目鏈接:

????????P2327 [SCOI2005] 掃雷

? ? ? ? 題目描述:

????????解題思路:

? ? ? ? 這個題也是可以枚舉的,我們可以根據第一排是否1有雷推出下一排有沒有雷(是否有雷用0 1表示)那么下一排有沒有雷就=上一排的地雷+當前排的地雷 - 當前排的數字

? ? ? ? 解題代碼:

#include <iostream>using namespace std;const int N = 1e4 + 10;int n;int a[N], b[N];int cheak1()
{a[1] = 0;for (int i = 2; i <= n + 1; i++){a[i] = b[i - 1] - a[i - 1] - a[i - 2];if (a[i] > 1 || a[i] < 0)return 0;}if (a[n + 1])return 0;return 1;
}int cheak2()
{a[1] = 1;for (int i = 2; i <= n + 1; i++){a[i] = b[i - 1] - a[i - 1] - a[i - 2];if (a[i] > 1 || a[i] < 0)return 0;}if (a[n + 1])return 0;return 1;
}int main()
{cin >> n;for (int i = 1; i <= n; i++){cin >> b[i];}int ret = 0;ret += cheak1();ret += cheak2();cout << ret << endl;return 0;
}

ok,本期就到這里吧,過兩天在更新下一期 拜拜~

每日三省吾身:

  • 暴力能過嗎?

  • 貪心能貪嗎?

  • 要不…開擺?🤔

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

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

相關文章

vue 仿deepseek前端開發一個對話界面

后端&#xff1a;調用deepseek的api&#xff0c;所以返回數據格式和deepseek相同 {"model": "DeepSeek-R1-Distill-Qwen-1.5B", "choices": [{"index": 0, "delta": {"role": "assistant", "cont…

SpringMVC(五)攔截器

目錄 攔截器基本概念 一 單個攔截器的執行 1 創建攔截器 2 SpringMVC配置&#xff0c;并指定攔截路徑。 3 運行結果展示&#xff1a; 二 多個攔截器的執行順序 三 攔截器與過濾器的區別 攔截器基本概念 SpringMVC內置攔截器機制&#xff0c;允許在請求被目標方法處理的…

Hive SQL 精進系列:PERCENTILE_APPROX 搞定分位數

目錄 一、引言二、percentile_approx 函數基礎2.1 基本語法參數解釋返回值簡單示例 三、應用場景3.1 數據分析與報告3.2 數據清洗與異常值檢測3.3 性能監控與優化 四、使用注意事項4.1 數據類型要求4.2 精度與性能平衡4.3 空值處理 五、總結 一、引言 百分位數作為一種常用的統…

pytorch快速入門——手寫數字分類GPU加速

&#x1f451;主頁&#xff1a;吾名招財 &#x1f453;簡介&#xff1a;工科學碩&#xff0c;研究方向機器視覺&#xff0c;愛好較廣泛… ?&#x1f4ab;簽名&#xff1a;面朝大海&#xff0c;春暖花開&#xff01; pytorch快速入門——手寫數字分類GPU加速 一、tensor1&#…

【開源免費】基于SpringBoot+Vue.JS電商應用系統(JAVA畢業設計)

本文項目編號 T 242 &#xff0c;文末自助獲取源碼 \color{red}{T242&#xff0c;文末自助獲取源碼} T242&#xff0c;文末自助獲取源碼 目錄 一、系統介紹二、數據庫設計三、配套教程3.1 啟動教程3.2 講解視頻3.3 二次開發教程 四、功能截圖五、文案資料5.1 選題背景5.2 國內…

經歷過的IDEA+Maven+JDK一些困惑

注意事項&#xff1a;由于使用過程中是IDEA綁定好另外2個工具&#xff0c;所以報錯統一都顯示在控制臺&#xff0c;但要思考和分辨到底是IDEA本身問題導致的報錯&#xff0c;還是maven導致的 使用前的配置 編輯期 定義&#xff1a;指的是從open projects開始&#xff0c;到執行…

【推理】大模型ReasonGraph:推理路徑的可視化論文及代碼分析

ReasonGraph:推理路徑的可視化 ReasonGraph demo http://192.168.50.197:5001/ 作者的其他論文 ** ** LLM推理方法的相關工作

學習路之TP6 --重寫vendor目錄下的文件(服務覆蓋command---優點:命令前后一致)

學習路之TP6 --重寫vendor目錄下的文件 一、新建命令文件&#xff1a;二、復制修改&#xff1a;Server.php三、新建服務類&#xff1a;WorkmanService.php四、注冊服務五、運行效果 有需求要重寫vendor\topthink\think-worker\src\command\Server.php 以實現修改代碼 一、新建命…

【藍圖使用】繪制mesh頂點的法線

文章目錄 繪制法線Normal準備工作UE5資源制作藍圖制作 參考 繪制法線Normal 參考[1]打算用藍圖走一遍渲染管線&#xff0c;還是可以的 準備工作 Blender制作一個三個頂點的模型 要不要材質無所謂&#xff0c;就一個三個頂點的mesh即可&#xff0c;參考[2] 找到一個法線貼…

【算法學習之路】10.二叉樹

二叉樹 前言一.簡介二.題目123 前言 我會將一些常用的算法以及對應的題單給寫完&#xff0c;形成一套完整的算法體系&#xff0c;以及大量的各個難度的題目&#xff0c;目前算法也寫了幾篇&#xff0c;題單正在更新&#xff0c;其他的也會陸陸續續的更新&#xff0c;希望大家點…

AI軟件棧:推理框架(二)-Llama CPP1

Llama CPP的主要構造&#xff0c;GGUF和GGML為兩個主要部分&#xff0c;包括模型描述文件和模型參數存儲文件 文章目錄 GGUF構建圖讀取權重 GGUF llama.cpp 的作者 Georgi Gerganov 提出的新一代大模型描述文件 GPT-Generated Unified Format&#xff0c;繼承自GGML&#xff0…

CentOS 7 64 安裝 Docker

前言 在虛擬機中安裝 Docker 是一種常見的測試和開發環境搭建方式。通過在虛擬機上安裝 Docker&#xff0c;可以方便地創建和管理容器化應用&#xff0c;同時避免對宿主機系統造成影響。以下是在 CentOS 7 虛擬機中安裝 Docker 的詳細步驟。 1. 更新系統&#xff08;可以不操作…

Flutter_學習記錄_video_player、chewie 播放視頻

1. video_player 視頻播放 插件地址&#xff1a;https://pub.dev/packages/video_player 添加插件 導入頭文件 import package:video_player/video_player.dart;Android配置&#xff08;iOS不用配置&#xff09; 修改這個文件&#xff1a;/android/app/src/main/AndroidMani…

VSCode通過SSH免密遠程登錄Windows服務器

系列 1.1 VSCode通過SSH遠程登錄Windows服務器 1.2 VSCode通過SSH免密遠程登錄Windows服務器 文章目錄 系列1 準備工作2 本地電腦配置2.1 生成密鑰2.2 VS Code配置密鑰 3. 服務端配置3.1 配置SSH服務器sshd_config3.2 復制公鑰3.3 配置權限&#xff08;常見問題&#xff09;3.…

強大的數據庫DevOps工具:NineData 社區版

本文作者司馬遼太杰&#xff0c; gzh&#xff1a;程序猿讀歷史 在業務快速變化與數據安全日益重要的今天&#xff0c;生產數據庫變更管理、版本控制、數據使用是數據庫領域的核心挑戰之一。傳統的解決方式往往采用郵件或即時通訊工具發起審批流程&#xff0c;再通過堡壘機直連數…

離線服務器ollama新增qwen2:0.5b模型

離線服務器ollama新增qwen2:0.5b模型 Dify集成ollama前面已經介紹過離線服務器CentOS使用的docker安裝的ollama&#xff0c;其中在ollama中已經安裝了deepseek-r1:1.5b。目前的需求是需要再安裝一個qwen2:0.5b的模型&#xff0c;那么如何安裝呢&#xff1f; 1.首先在有網的服…

淺談StarRocks數據庫簡介及應用

StarRocks是一款高性能的實時分析型數據庫&#xff0c;專為復雜的SQL查詢提供極高的性能&#xff0c;尤其適用于數據分析場景。它是一款開源的新一代極速全場景MPP&#xff08;Massively Parallel Processing&#xff0c;大規模并行處理&#xff09;數據庫&#xff0c;致力于構…

Cadence學習筆記4

想到一個思路理解過程&#xff0c;記錄一下&#xff1a; 就是我在別的地方&#xff0c;前一天的那些 Lib 都不在了&#xff0c;突然發現自己好像就在 Cadence 中畫不了 PCB 了。這就引發了我思考在 Cadence 中如何進行繪制的一個整體的流程。 首先得有原理圖&#xff0c;那么原…

Linux--git

ok&#xff0c;我們今天來學習如何在Linux上建立鏈接git 版本控制器Git 不知道你?作或學習時&#xff0c;有沒有遇到這樣的情況&#xff1a;我們在編寫各種?檔時&#xff0c;為了防??檔丟失&#xff0c;更改 失誤&#xff0c;失誤后能恢復到原來的版本&#xff0c;不得不…

(七)Spring Boot學習——Redis使用

有部分內容是常用的&#xff0c;為了避免每次都查詢數據庫&#xff0c;將部分數據存入Redis。 一、 下載并安裝 Redis Windows 版的 Redis 官方已不再維護&#xff0c;你可以使用 微軟提供的 Redis for Windows 版本 或者 使用 WSL&#xff08;Windows Subsystem for Linux&a…