目錄
文章
分類
標籤
AI ai android Bitbucket C# C++ Certbot ChatGPT Cloudflare Code Runner CPE CPU排程 cron Daphne Django DNS設定 Docker fused-location Git GPT HTML HTTPS kotlin Line Bot Linux location-app Mac macOS MySQL n8n Next.js Nginx OpenAI permissions Python Python Django Python Email Pytorch pytorch PyTorch rclone React Redis Replit SSL streamlit Swap Ubuntu Unity Vector VM設定 VSCode WebSocket WordPress Wordpress wordpress-備份 yolo YOLOv9 中位數 伺服器設定 修復 最佳住址 利率 前端 動態生成 即時通訊 卷積神經網路 場景切換 學習 安全性 實作 專案管理 帳號建立 影像分類 後台 性能 惡意軟體 成績查詢 成績管理 投資 排序 操作系統 效率 教學 本地測試 殖利率 深度學習 演算法 版本控制 物件偵測 神經網路 程式解題 程式設計 競程 系統管理 終端機 統計 網站恢復 網頁框架 股票 自動化 財務 資料共享 資料庫 資料結構 距離計算 路由 遊戲開發 選單 部署 郵件發送 開發 開發技巧 開發環境 開發者 雲端備份 靜態文件
目錄
目錄
389 字
2 分鐘
UVA 11321 - Sort! Sort!! And Sort!!!
題目來源:UVA 11321 - Sort! Sort!! And Sort!!!
解題思路
本題要求按照特定規則對一系列整數進行排序。規則如下:
- 優先比較餘數:將數字除以 M 的餘數(
num % M)由小到大排序。 - 餘數相同時:
- 奇偶數性質:奇數 (Odd) 優先於偶數 (Even)。
- 皆為奇數:數值較大者排在前面。
- 皆為偶數:數值較小者排在前面。
程式解說
- 模擬 C 語言的餘數運算:Python 的
%運算子在處理負數時與 C/C++ 不同(例如:-10 % 3在 Python 是2,在 C 是-1)。題目要求的是 C 語言風格的餘數,因此需要針對負數做修正。
程式碼
1def sort_key(num):2 r=mod(num,m)3
4 if num%2!=0:5 isOdd=06 last=-num7 else:8 isOdd=19 last=num10
11 return (r,isOdd,last)12
13def mod(x,m):14 mo=x%m15 if x<0 and mo>0:16 mo=x%m-m17 return mo18
19while True:20 n,m=map(int,input().split())21 print(n,m)22 if n==0 and m==0:23 break24 numList=[]25
26 for _ in range(n):27 number=int(input())28 numList.append(number)29
30 numList.sort(key=sort_key)31
32 for i in numList:33 print(i)補充:Python 與 C 的 Modulo 差異
在解這題時,需特別注意 Python 與 C/C++ 對於負數取餘數的定義不同:
- Python:
-10 % 3 = 2(結果符號通常與除數相同) - C/C++:
-10 % 3 = -1(結果符號通常與被除數相同)
為了符合題目的測資要求(題目是基於 C 語言行為),當 n < 0 且計算出的餘數 > 0 時,我們需要減去 m 來調整回 C 語言的結果。
簡單想法:在 Python 中,
%可以想成「加上多少個除數,才能變回正的倍數?」;而此題需要的是「直接對數值截斷」的餘數概念。
UVA 11321 - Sort! Sort!! And Sort!!!
/posts/uva-11321---sort-sort-and-sort/ 部分資訊可能已經過時
目錄
文章
分類
標籤
AI ai android Bitbucket C# C++ Certbot ChatGPT Cloudflare Code Runner CPE CPU排程 cron Daphne Django DNS設定 Docker fused-location Git GPT HTML HTTPS kotlin Line Bot Linux location-app Mac macOS MySQL n8n Next.js Nginx OpenAI permissions Python Python Django Python Email Pytorch pytorch PyTorch rclone React Redis Replit SSL streamlit Swap Ubuntu Unity Vector VM設定 VSCode WebSocket WordPress Wordpress wordpress-備份 yolo YOLOv9 中位數 伺服器設定 修復 最佳住址 利率 前端 動態生成 即時通訊 卷積神經網路 場景切換 學習 安全性 實作 專案管理 帳號建立 影像分類 後台 性能 惡意軟體 成績查詢 成績管理 投資 排序 操作系統 效率 教學 本地測試 殖利率 深度學習 演算法 版本控制 物件偵測 神經網路 程式解題 程式設計 競程 系統管理 終端機 統計 網站恢復 網頁框架 股票 自動化 財務 資料共享 資料庫 資料結構 距離計算 路由 遊戲開發 選單 部署 郵件發送 開發 開發技巧 開發環境 開發者 雲端備份 靜態文件
目錄