每日c/c++題 備戰藍橋杯(Cantor 表)

Cantor 表的探究與實現

在數學中,有理數的可枚舉性是一個令人驚嘆的結論。今天,就讓我們一起深入探討這個經典問題,并分享一段精心編寫的代碼,揭開這一數學奧秘的神秘面紗。

問題背景

在 19 世紀末,偉大的數學家康托爾(Georg Cantor)證明了有理數是可枚舉的。他采用了一種巧妙的 Z 字形排列方式,將所有的有理數按順序排列在一個無限表格中,從而使每個有理數都能被唯一地枚舉出來。

這種排列方式的規律如下:

  • 第一層只有分數 1/1。
  • 第二層包含分數 1/2 和 2/1。
  • 第三層包含分數 1/3、2/2 和 3/1。
  • 第四層包含分數 1/4、2/3、3/2 和 4/1。
  • 此類依推,每一層的分數個數遞增。

這種排列方式使得每個有理數都可以被唯一地映射到一個整數,從而證實了有理數的可數性。

解題思路

面對這一問題,關鍵在于找到一種有效的算法,能夠根據給定的整數 n,快速且準確地找到對應的有理數。以下是解決該問題的詳細思路:

1. 確定層級關系

首先,我們需要確定給定的整數 n 所在的層級(即第幾層)。每一層的分數個數遵循一定的規律:第 t 層的分數個數為 t。因此,第 t 層的起始位置可以通過公式 t*(t-1)/2 +1 來計算,而結束位置則是 t*(t+1)/2。

通過不斷累加每一層的分數個數,直到累計值不超過 n 的最大位置,我們就能確定 n 所在的層級。例如,如果 n=7,我們發現它位于第 4 層(第 4 層的起始位置是 7,結束位置是 10)。

2. 判斷奇偶性

每一層的排列方向交替變化。這使得奇數層和偶數層的分子、分母變化規律有所不同:

  • 偶數層:分子從大到小遞減,分母從小到大遞增。
  • 奇數層:分子從小到大遞增,分母從大到小遞減。

因此,在確定層級后,需要根據層級的奇偶性來調整分子和分母的計算方式。

3. 計算分子和分母

在確定層級 t 后,我們需要計算出該層的起始位置 s。然后,根據 n 與 s 的差值,逐步調整分子和分母的值,直到找到對應的有理數。

例如,假設我們已經確定 n=7 位于第 4 層,且第 4 層為偶數層,那么起始位置 s=7(即該層的第一個分數是 1/4)。此時,n剛好等于s,所以對應的分數就是起始分數,即 1/4。

如果 n 不等于起始位置,我們需要在該層內逐步調整分子和分母。例如,假設 n=8,那么它位于第 4 層的第二個位置。此時,分子會減 1,分母會加 1,得到分數 2/3。

代碼實現

#include <bits/stdc++.h>
using namespace std;int main() {int n;cin >> n;int s = 1;int t = 1;// 確定層級while (s <= n) {t++;s = t * (t + 1) / 2;}t--;// 判斷奇偶性并計算分子分母if (t % 2 == 0) {int zi = t + 1, mu = 1;s = t * (t + 1) / 2;if (s == n) {cout << t << "/1";} else {for (int i = 1;; ++i) {if (s + i == n) {cout << zi << "/" << mu;break;} else {zi--;mu++;}}}} else {int zi = 1, mu = t + 1;s = t * (t + 1) / 2;if (s == n) {cout << "1/" << t;} else {for (int i = 1;; ++i) {if (s + i == n) {cout << zi << "/" << mu;break;} else {zi++;mu--;}}}}return 0;
}

讓我們詳細解析一下這段代碼的邏輯:

  1. 輸入讀取和變量初始化:首先讀取輸入的整數 n,并初始化變量 s 和 t 用于計算層級。
  2. 確定層級:通過循環不斷累加每一層的分數個數,直到找到包含 n 的層級 t。
  3. 判斷奇偶性:根據層級 t 的奇偶性,確定該層的排列方向。
  4. 計算起始位置和分子分母:計算該層的起始位置 s,并根據起始位置和 n 的差值,逐步調整分子和分母的值。
  5. 輸出結果:當找到對應的分數時,輸出結果。

總結

通過以上探索,我們不僅理解了康托爾表的規律,還成功實現了能夠根據整數 n 快速定位對應有理數的代碼。這個過程中,我們體會到了數學與編程的完美結合,以及通過邏輯思考解決問題的樂趣。希望這篇博客能為你帶來啟發,也期待你在編程的世界中發現更多奇妙的奧秘!

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

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

相關文章

解決idea與springboot版本問題

遇到以下問題&#xff1a; 1、springboot3.2.0與jdk1.8 提示這個包org.springframework.web.bind.annotation不存在&#xff0c;但是pom已經引入了spring-boot-starter-web 2、Error:Cannot determine path to tools.jar library for 17 (D:/jdk17) 3、Error:(3, 28) java: …

Notepad++找回自動暫存的文件

場景&#xff1a; 當你沒有保存就退出Notepad&#xff0c;下次進來Notepad會自動把你上次編輯的內容顯示出來&#xff0c;以便你繼續編輯。除非你手動關掉當前頁面&#xff0c;這樣Notepad就會刪除掉自動保存的內容。 問題&#xff1a; Notepad會將自動保存的文件地址,打開Note…

yolov12畢設前置知識準備 1

1 什么是目標檢測呢&#xff1f; 目標檢測&#xff08;Object Detection&#xff09;主要用于識別圖像或視頻中特定類型物體的位置&#xff0c;并標注其類別。 簡單來說&#xff0c;就是讓計算機像人類一樣 “看懂” 圖像內容&#xff0c;不僅能識別出物體&#xff08;如人、…

unix/linux source 命令,其內部結構機制

要理解 source (或 .) 命令的內部結構機制,我們需要戴上“操作系統”和“解釋器設計”的眼鏡,深入到 Shell 如何管理其狀態以及如何執行命令的層面。 雖然我們無法直接看到 Shell 內部的 C 代碼(除非我們去閱讀 Bash 或 Zsh 的源碼),但我們可以基于其行為和操作系統的原理…

計算機網絡學習20250528

地址解析協議ARP 實現IP地址和Mac地址的轉換 ARP工作原理&#xff1a; 每臺主機或路由器都有一個ARP表&#xff0c;表項&#xff1a;<IP地址&#xff0c;Mac地址&#xff0c;TTL>&#xff08;TTL一般為20分鐘&#xff09; 主機產生ARP查詢分組&#xff0c;包含源目的IP地…

【Rust】Rust獲取命令行參數以及IO操作

?? 歡迎大家來到景天科技苑?? &#x1f388;&#x1f388; 養成好習慣&#xff0c;先贊后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者簡介&#xff1a;景天科技苑 &#x1f3c6;《頭銜》&#xff1a;大廠架構師&#xff0c;華為云開發者社區專家博主&#xff0c;…

微服務中引入公共攔截器

本文使用的微服務版本為springcloudAlbaba :2021.0.4.0 微服務工程&#xff0c;一般公共的東西都放入一個工程&#xff0c;別的微服務都會引入這個工程&#xff0c;比如common-service,那么就可以在這個工程編寫一個攔截器&#xff1a;&#xff0c;比如&#xff1a; public cla…

Linux SLES 系統的/var/log/下的常見文件及其作用

在 SUSE Linux Enterprise Server&#xff08;SLES&#xff09; 系統中&#xff0c;/var/log/ 目錄是系統日志的集中地&#xff0c;存儲了各種服務、內核、系統消息的日志。以下是一些在 /var/log/ 下常見的日志文件及其功能&#xff1a; &#x1f4c2; 常見日志文件及功能 文…

oracle goldengate同步SQL server到SQL server的實時數據同步

參考文檔 https://docs.oracle.com/en/middleware/goldengate/core/19.1/oggmp/oracle-goldengate-classic-sql-server.html#GUID-948C5BEE-E7A0-4CE2-BE09-F83145677D18 https://docs.oracle.com/en/middleware/goldengate/core/21.3/ggcab/other-programs-and-settings-sql-…

語音轉文字工具

平時工作和學習比較忙&#xff0c;可能沒時間聽講座&#xff0c;只能看回放&#xff0c;回訪也很長&#xff0c;這時&#xff0c;我們可以借助語言轉文字&#xff0c;通過閱讀文字快速了解講座的重點&#xff0c;今天給大家分享一個本人經常用的語言轉文字工具&#xff0c;改工…

硬件實時時鐘(RTC)

硬件實時時鐘&#xff08;RTC&#xff09;詳解 硬件實時時鐘&#xff08;Real-Time Clock&#xff0c;RTC&#xff09;是計算機主板上的一個獨立計時芯片&#xff0c;用于在系統關機后持續記錄時間。它不依賴操作系統&#xff0c;由紐扣電池&#xff08;如CR2032&#xff09;供…

pycharm debug的時候無法debug到指定的位置就停住不動了

報錯大致是這樣的&#xff0c;但是直接run沒有問題&#xff0c;debug就停住不動了 Traceback (most recent call last): File "/home/mapengsen/.pycharm_helpers/pydev/_pydevd_bundle/pydevd_comm.py", line 467, in start_client s.connect((host, port)) Timeou…

Python6.1打卡(day33)

DAY 33 MLP神經網絡的訓練 知識點回顧&#xff1a; 1.PyTorch和cuda的安裝 2.查看顯卡信息的命令行命令&#xff08;cmd中使用&#xff09; 3.cuda的檢查 4.簡單神經網絡的流程 1.數據預處理&#xff08;歸一化、轉換成張量&#xff09; 2.模型的定義 …

NodeJS全棧開發面試題講解——P11消息隊列(MQ)

? 11.1 為什么要用消息隊列&#xff1f;在哪些場景下最適合&#xff1f; ? 作用&#xff1a; 削峰填谷&#xff1a;緩解高并發壓力&#xff0c;異步處理任務&#xff08;如秒殺下單 → MQ → 異步扣庫存&#xff09; 解耦服務&#xff1a;上下游解耦&#xff08;如下單服務…

mysql執行sql語句報錯事務鎖住

報錯情況 1205 - Lock wait timeout exceeded; try restarting transaction先找出長時間運行的事務 SELECT * FROM information_schema.INNODB_TRX ORDER BY trx_started ASC;終止長時間運行的事務 KILL [PROCESS_ID];

C#集合循環刪除某些行

你想要在遍歷集合&#xff08;例如List&#xff09;的同時刪除某些元素時&#xff0c;直接在循環中刪除元素可能會導致問題&#xff0c;因為這可能會改變集合的大小和導致索引問題&#xff1b; 可以用for循環的倒序來刪除&#xff1b; 如果要刪除滿足特定條件的所有元素&…

裂縫儀在線監測裝置:工程安全領域的“實時守衛者”

在基礎設施運維領域&#xff0c;裂縫擴展是威脅建筑結構安全的核心隱患之一。傳統人工巡檢方式存在效率低、時效性差、數據主觀性強等局限&#xff0c;而裂縫儀在線監測裝置通過技術迭代&#xff0c;實現了對結構裂縫的自動化、持續性追蹤&#xff0c;為工程安全評估提供科學依…

Multisim14使用教程詳盡版--(2025最新版)

一、Multisim14前言 1.1、主流電路仿真軟件 1. Multisim:NI開發的SPICE標準仿真工具,支持模擬/數字電路混合仿真,內置豐富的元件庫和虛擬儀器(示波器、頻譜儀等),適合教學和競賽設計。官網:艾默生旗下測試和測量系統 - NI。 2. LTspice XVII:ADI旗下免費高性能SPICE仿…

深度學習篇---人臉識別中的face-recognition庫和深度學習

深度學習方法和使用 Python 的face_recognition庫進行人臉識別在技術原理、實現方式和應用場景上有顯著區別&#xff0c;以下從多個維度對比分析&#xff1a; 一、技術原理 1. 深度學習方法 核心邏輯&#xff1a;基于神經網絡&#xff08;如卷積神經網絡 CNN&#xff09;構建…

Go語言中的數據類型轉換

Go 語言中只有強制類型轉換&#xff0c;沒有隱式類型轉換。 1. 數值類型之間的相互轉換 1.1. 整型和整型之間的轉換 package main import "fmt"func main() {var a int8 20var b int16 40fmt.Println(int16(a) b)// 60 }1.2. 浮點型和浮點型之間的轉換 packag…