首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言解 Project Euler 兩題:直角三角形周長最多解、百萬階字典序排列

     編輯:關於C語言

題目一:直角三角形周長 p ≤ 1000 的整數邊解最多者

已知 p=120 有三解:{20,48,52}、{24,45,51}、{30,40,50}。
求 p ≤ 1000 使解數最多的 p。

答案:840。


// 核心邏輯:遍歷 a,b 計算 c = p-a-b,判斷 a²+b²=c²
// 完整代碼見附件/倉庫

題目二:0~9 十個數字的字典序第 1,000,000 個排列

字典序示例:0,1,2 → 012 021 102 120 201 210。
求 0~9 字典序第 100 萬個排列。

答案:2783915460。


// 核心邏輯:階乘數係(Factoradic)直接定位每位
// 9! = 362880, 1000000-1 = 999999
// 999999 / 9! = 2 餘 274239 → 第 0 位取剩餘數字[2] = 2
// 274239 / 8! = 6 餘 32319  → 第 1 位取[6] = 7
// ... 依次類推得 2 7 8 3 9 1 5 4 6 0

總結

兩題均屬組合數學 + 編程實現,關鍵在於數學建模轉化為 O(N) 或 O(N²) 可行算法,而非暴力枚舉。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved