1730: Sum of MSLCM ★★☆☆☆ 題組:Problem Set Archive with Online Judge

Slides:



Advertisements
Similar presentations
1 認識創業之財務 ( 資金 ) 及稅務問題 講師 : 蘇炳章 日期 : 92 年 8 月 12 日.
Advertisements

芋見豆花 南臺科技大學─四技應用日語系 組員: 應用日語一乙 4A3E0003 江佳蓁 應用日語一乙 4A3E0006 鄭怡芳
有禮真好~玩得更快樂! 陽明山國家公園 故宮博物院 黃金博物館 六福村 飯店、旅館.
幼兒發展語學習專題研究起點 --論文寫作管理
五專醫護類科介紹 樹人醫專 職業教育組 李天豪 組長.
高瞻計畫(第二期) 永續環境相關新興科技融入 高中課程及教學之研究
高齡自主學習團體終身學習試辦計畫經費核銷
計算機協會 國際大學生程式設計競賽 Association of Computing Machinery International Collegiate Programming Contest (ACM-ICPC)
中国职教学会质量保障与评估研究会2016年学术年会
11010: Tic-Tac-Tough ★★★★☆ 題組: Problem Set Archive with Online Judge
~麗寶樂園~ 麗寶樂園位於台中市后里區安眉路月眉糖廠後方、接近泰安休息站,面積廣大約為200公頃,麗寶樂園是麗寶樂園國際開發股份有限公司與台糖公司合作的大型遊樂區;麗寶樂園園區分為三部分,東側為複合休閒區、中央為綜合育樂區、西側屬家庭娛樂區,包含有主題樂園、水上樂園、歡樂街、好萊塢劇場、主題旅館、渡假村、企業家具樂部、文化藝術區、馬術中心等設施。
股市低迷之際 如何操作期貨與選擇權 避險及獲利 統一期貨 投資顧問部 廖朝正.
台北縣98年三鶯區語文研習 --建國國小 修辭與標點符號 福和國中廖惠貞
電影裡的生命教育 主講人:李偉文 (牙醫師.作家.環保志工).
有三件事我很確定: 第一、愛德華是吸血鬼 第二、出於天性,他渴望喝我的血 第三、我無可救藥地愛上他了……
康寧大學102年招生囉!.
用“自言自语法”提高学生 英语口头表达能力 李奉栖.
強直性脊椎炎.
第4章 种群和群落.
陶板屋 組員:陳婷 劉峻愷 趙崇佑 陳鵬如.
你,是扼殺 孩子競爭力的幫兇嗎?.
四年級數學科 最小公倍數(LCM)的計算及應用.
我班最喜愛的零食 黃行杰.
项目二 网店运营 2.2 网店日常运营管理.
大陸產業分析 課程說明會.
公務員廉政倫理規範.
关于英语教学中课外阅读的教学反思 上海市中职英语中心组 沈毅.
組 員: 王 新 惠 吳 映 暄 李 盈 慧 廖 香 涵 盧 姵 華 訪談日期:
好好國際物流股份有限公司 全球運籌物流服務建議 中 華 貨 物 通 關 自 動 化 協 會 理 事 長 劉 陽 柳 二○○二年五月十五日
四年級數學科 最小公倍數(LCM)的計算及應用.
餐管一甲第6組餐概報告 組員:李佩宣,洪品軒,陳汶軒,蔡景元,藍君泓,蘇庭毅 訪談日期:2014/01/27
展覽行銷管理新體驗.
10號、34號及35號公報對產業發展之影響 安永會計師事務所 王金來 所長.
越 南 風 情.
Visual Basic 6.0 ——程序设计.
愛的奇蹟™ 幫您替寶貝 打造一個純淨的家!.
11308: Bankrupt Baker ★★☆☆☆ 題組:Problem Set Archive with Online Judge
小小銀行家 擔心子女未來的「錢」途嗎?或是否正苦思對策,希望能教導子女更負責任的使用、管理金錢?
10066: The Twin Towers ★★★☆☆ 題組:Problem Set Archive with Online Judge
106年「防暴社區初級預防宣導計畫」 補助案作業時程及撰寫說明 衛生福利部(保護服務司)
「性別平等」在校園 -- 簡介性別平等教育法的運作
10465: Homer Simpson ★★★☆☆ 題組:Problem Set Archive with Online Judge
Ch3 經營環境 管理學:整合觀點與創新思維3/e.中山大學企管系 著.前程文化 出版.
10902: Pick-up Sticks ★★☆☆☆ 題組:Problem Set Archive with Online Judge
第3节  认识简单机械.
數據處理 數 代數 度量 圖形與空間 數據處理 數 代數 度量 圖形與空間 象形圖 方塊圖 棒形圖.
士師記.
四年級數學 複習一.
仁濟醫院董之英紀念中學 多媒體教學軟件 數學科.
算法基础 上机实验 4 学 期: 2016 (秋).
教育部 「105年學生藥物濫用 防制認知檢測」.
算法基础 上机实验 4 学 期: 2017 (秋).
1753: Need for Speed ★★☆☆☆ 題組:Problem Set Archive with Online Judge
11908: Skyscraper ★★★☆☆ 題組:Problem Set Archive with Online Judge
組員:.
10039: Railroads ★★☆☆☆ 題組:Problem Set Archive with Online Judge
11455: Behold My Quadrangle ★☆☆☆☆
第三章 會計循環 3-1 瞭解會計循環織概念 3-2 清楚需要設置哪些帳簿及帳簿相關規定 3-3 評量.
10393:The One-Handed Typist
10107: What is the Median? ★★☆☆☆
 主講人:楊文明主任委員   106/06/30 中華電信職工福利委員會台北分會業務簡介.
11616:Roman Numerals ★★☆☆☆ 題組:Problem Set Archive with Online Judge
12439: February 29 ★☆☆☆☆ 題組:Problem Set Archive with Online Judge
11506: Angry Programmer ★★★★☆ 題組:Contest Set Archive with Online Judge
§2.2.1对数与对数运算.
圖 論 簡 介.
10801: Lift Hopping ★★★☆☆ 題組:Problem Set Archive with Online Judge
基慧小學 (馬灣) 升中選校座談會(12-14).
1200: A DP problem ★★☆☆☆ 題組:Problem Set Archive with Online Judge
Presentation transcript:

1730: Sum of MSLCM ★★☆☆☆ 題組:Problem Set Archive with Online Judge 解題者:陳冠智 解題日期:2018年6月7日 題意:對於一個數字N (1<N<20000001),maximum sum LCM(MSLCM)表示找到一個數字集合的最小公倍數為N,且該集合的和為最大。題目給定N,要求從2至N的MSLCM總和,即 𝑖=2 N 𝑀𝑆𝐿𝐶𝑀(𝑖) 。當N等於0時結束。

𝑖=2 4 𝑀𝑆𝐿𝐶𝑀(𝑖) = 𝑀𝑆𝐿𝐶𝑀(2) + 𝑀𝑆𝐿𝐶𝑀(3) + 𝑀𝑆𝐿𝐶𝑀(4) 𝑀𝑆𝐿𝐶𝑀(2) = 3: 題意範例: 最小公倍數的最大總和 – MSLCM 當 N = 4 𝑖=2 4 𝑀𝑆𝐿𝐶𝑀(𝑖) = 𝑀𝑆𝐿𝐶𝑀(2) + 𝑀𝑆𝐿𝐶𝑀(3) + 𝑀𝑆𝐿𝐶𝑀(4) 𝑀𝑆𝐿𝐶𝑀(2) = 3: LCM(1, 2) = 2 且 1+2=3為 Maximum Sum of set 𝑀𝑆𝐿𝐶𝑀(3) = 4: LCM(1, 3) = 3 且 1+3=4為 Maximum Sum of set 𝑀𝑆𝐿𝐶𝑀(4) = 7: LCM(1, 2, 4) = 4 且 1+2+4=7為 Maximum Sum of set 𝑖=2 4 𝑀𝑆𝐿𝐶𝑀(𝑖) = 3 + 4 + 7 = 14 (Input) (Output)

𝑖=2 10 𝑀𝑆𝐿𝐶𝑀(𝑖) = 3+4+7+6+12+8+15+13+18=86 題意範例: 最小公倍數的最大總和 – MSLCM 當 N = 10 𝑖=2 10 𝑀𝑆𝐿𝐶𝑀(𝑖) = 𝑀𝑆𝐿𝐶𝑀(2)+𝑀𝑆𝐿𝐶𝑀(3)+ … +𝑀𝑆𝐿𝐶𝑀(10) (Input) LCM(1, 2) = 2, 1+2=3 LCM(1, 3) = 3, 1+3=4 LCM(1, 2, 4) = 4, 1+2+4=7 LCM(1, 5) = 5, 1+5=6 LCM(1, 2, 3, 6) = 6, 1+2+3+6=12 LCM(1, 7) = 7, 1+7=8 LCM(1, 2, 4, 8) = 8, 1+2+4+8=15 LCM(1, 3, 9) = 9, 1+3+9=13 LCM(1, 2, 5, 10)=10, 1+2+5+10=18 𝑖=2 10 𝑀𝑆𝐿𝐶𝑀(𝑖) = 3+4+7+6+12+8+15+13+18=86 N MSLCM(N) 2 3 4 7 5 6 12 8 15 9 13 10 18

使集合的總和為最大  該集合為N之所有因數 原始題意: 給定N (1<N<20000001),求2~N的所有因數總和 解法(1): 使集合的總和為最大  該集合為N之所有因數 原始題意: 給定N (1<N<20000001),求2~N的所有因數總和 2: (1, 2) 3: (1, 3) 4: (1, 2, 4) 5: (1, 5) 6: (1, 2, 3, 6) 7: (1, 7) 8: (1, 2, 4, 8) 9: (1, 3, 9) 10: (1, 2, 5, 10) 1. 求出2~N的因數 2. 將這些數全部加總 #不太可能一個一個找因數

解法(2): 觀察因數出現次數 (N=10) 1: (1) 2: (1, 2) 3: (1, 3) 4: (1, 2, 4) 因數(f) 次數(t) 次數關係(t=N/f) 1 10 =10/1 2 5 =10/2 3 =10/3 4 =10/4 =10/5 6 =10/6 7 =10/7 8 =10/8 9 =10/9 =10/10 1: (1) 2: (1, 2) 3: (1, 3) 4: (1, 2, 4) 5: (1, 5) 6: (1, 2, 3, 6) 7: (1, 7) 8: (1, 2, 4, 8) 9: (1, 3, 9) 10: (1, 2, 5, 10)

解法(2): 對於N,依 1~N 次數關係計算最終答案 以10為例: 總和 = 1 * (10/1) + 2 * (10/2) 因數(f) 次數(t) 1 10 2 5 3 4 6 7 8 9 總和 = 1 * (10/1) + 2 * (10/2) + 3 * (10/3) + 4 * (10/4) + … + 9 * (10/9) + 10 * (10/10) -1 = 10 + 10 + 9 + 8 + 10 + 6 + 7 + 8 + 9 + 10 - 1 = 86 #題目問從2 ~ N之和  最後要扣掉N=1的結果: 1 #每筆N可達 2∗ 10 7 ,需要O(N),還是會TLE

觀察: 出現次數會遞減,而且連續因數的次數可能都一樣 目標: 次數相同的因數一起算 解法(3): 觀察: 出現次數會遞減,而且連續因數的次數可能都一樣 目標: 次數相同的因數一起算 因數(f) 次數(t) 1 10 2 5 3 4 6 7 8 9 𝑙, r = 0 每次 { 𝑙 = r+1 計算因數1的次數t = N/𝑙 計算相同次數的因數右區間r = N/t 加總: 所有因數 [𝑙+(𝑙+1)+…+r] * 次數(t) } (因數的左, 右區間) (第一次因數左區間從1開始) (左區間~右區間) #右區間: ∵ 10/6 = 10/7 = 10/8 = 10/9 = 10/10 =1 (in code) ∴當10/1, 可以得到最大的因數10

解法範例: 以N=10為例: 出現次數(t) 因數左區間(𝑙) 因數右區間(r) 總和 累積總和 1 𝑙 = r+1 計算因數1的次數t = N/𝑙 計算相同次數的因數右區間r = N/t 加總: 所有因數 [𝑙+(𝑙+1)+…+r] * 次數(t) 解法範例: 以N=10為例: 出現次數(t) 因數左區間(𝑙) 因數右區間(r) 總和 累積總和 1

解法範例: 以N=10為例: 出現次數(t) 因數左區間(𝑙) 因數右區間(r) 總和 累積總和 10 1 𝑙 = r+1 計算因數1的次數t = N/𝑙 計算相同次數的因數右區間r = N/t 加總: 所有因數 [𝑙+(𝑙+1)+…+r] * 次數(t) 解法範例: 以N=10為例: 出現次數(t) 因數左區間(𝑙) 因數右區間(r) 總和 累積總和 10 1

解法範例: 以N=10為例: 出現次數(t) 因數左區間(𝑙) 因數右區間(r) 總和 累積總和 10 1 𝑙 = r+1 計算因數1的次數t = N/𝑙 計算相同次數的因數右區間r = N/t 加總: 所有因數 [𝑙+(𝑙+1)+…+r] * 次數(t) 解法範例: 以N=10為例: 出現次數(t) 因數左區間(𝑙) 因數右區間(r) 總和 累積總和 10 1

解法範例: 以N=10為例: 出現次數(t) 因數左區間(𝑙) 因數右區間(r) 總和 累積總和 10 1 2 𝑙 = r+1 計算因數1的次數t = N/𝑙 計算相同次數的因數右區間r = N/t 加總: 所有因數 [𝑙+(𝑙+1)+…+r] * 次數(t) 解法範例: 以N=10為例: 出現次數(t) 因數左區間(𝑙) 因數右區間(r) 總和 累積總和 10 1 2

解法範例: 以N=10為例: 出現次數(t) 因數左區間(𝑙) 因數右區間(r) 總和 累積總和 10 1 5 2 𝑙 = r+1 計算因數1的次數t = N/𝑙 計算相同次數的因數右區間r = N/t 加總: 所有因數 [𝑙+(𝑙+1)+…+r] * 次數(t) 解法範例: 以N=10為例: 出現次數(t) 因數左區間(𝑙) 因數右區間(r) 總和 累積總和 10 1 5 2

解法範例: 以N=10為例: 出現次數(t) 因數左區間(𝑙) 因數右區間(r) 總和 累積總和 10 1 5 2 20 𝑙 = r+1 計算因數1的次數t = N/𝑙 計算相同次數的因數右區間r = N/t 加總: 所有因數 [𝑙+(𝑙+1)+…+r] * 次數(t) 解法範例: 以N=10為例: 出現次數(t) 因數左區間(𝑙) 因數右區間(r) 總和 累積總和 10 1 5 2 20

解法範例: 以N=10為例: 出現次數(t) 因數左區間(𝑙) 因數右區間(r) 總和 累積總和 10 1 5 2 20 3 9 29 計算因數1的次數t = N/𝑙 計算相同次數的因數右區間r = N/t 加總: 所有因數 [𝑙+(𝑙+1)+…+r] * 次數(t) 解法範例: 以N=10為例: 出現次數(t) 因數左區間(𝑙) 因數右區間(r) 總和 累積總和 10 1 5 2 20 3 9 29

解法範例: 以N=10為例: 總和 = 2 * [(4+5) * 2 / 2] = 18 出現次數(t) 因數左區間(𝑙) 因數右區間(r) 計算因數1的次數t = N/𝑙 計算相同次數的因數右區間r = N/t 加總: 所有因數 [𝑙+(𝑙+1)+…+r] * 次數(t) 解法範例: 以N=10為例: 出現次數(t) 因數左區間(𝑙) 因數右區間(r) 總和 累積總和 10 1 5 2 20 3 9 29 4 18 47 梯形公式 總和 = 2 * [(4+5) * 2 / 2] = 18

解法範例: 以N=10為例: 最後結果: 87 – 1 = 86 (扣掉N=1的情況) 𝑙 = r+1 計算因數1的次數t = N/𝑙 計算相同次數的因數右區間r = N/t 加總: 所有因數 [𝑙+(𝑙+1)+…+r] * 次數(t) 解法範例: 以N=10為例: 最後結果: 87 – 1 = 86 (扣掉N=1的情況) 出現次數(t) 因數左區間(𝑙) 因數右區間(r) 總和 累積總和 10 1 5 2 20 3 9 29 4 18 47 6 40 87 梯形公式 總和 = 1 * [(6+10) * 5 / 2] = 40

討論: 題目遇到N=0才停止,假設有 r 筆測資 解法(2)計算1~N個別因數個數  O rN 解法(3)以次數為單位  O r log N 因數(f) 次數(t) 1 10 2 5 3 4 6 7 8 9 N=20000000時,有8943個不同次數