2019年4月24日 星期三

ProjectEuler 666 - Solution

不知不覺ProjectEuler已經出到第666題了!

666 - 魔鬼的印記

但題目卻不是那麼魔鬼,剛開始像是墜入五里霧中,了解其原理後才發現意外的簡單。不過就是列式子外加疊代,大約只要50次的疊代就可以達到14位的精度。題目只要求8位的精度實在太低了-_-


附帶一提, 這題刷新了我在fastest table的最低名次,第97名--__--

2019年4月2日 星期二

ProjectEuler 663 - Solutions

這題大家都說要用線段樹(segment tree),可是我不會用啊!我當然知道線段樹,只是不知道要如何將線段樹用在這題?

觀察到要更動的項數很少,大約是2*10^5項,忽然想到區間查詢可以將 陣列分割成Sqrt(N)個區間來做。對於S(N,m)-S(N,n)有著(m-n)*N^0.5的複雜度。依題目的要求,大約是6.3*10^8的計算量。最後程式跑了15秒!1分鐘以內,算是達標了!第23名。就憑著這23名,讓我又回到歐拉人的前20名。175分,歐拉人第15名!!!

2019年2月25日 星期一

ProjectEuler 657 and ProjectEuler 658

本週一次出兩題,第657題跟658題,應該又是賺分的機會了。每次出兩題的時候,我都有很大的機會可以賺到分數。

沒想到這次657題居然跟我在某個地方曾經做過的題目幾乎一模一樣。只有兩個地方不一樣,原題要求的是complete word的數目且word不允許某些字元為開頭。然而這兩個不一樣的地方還是讓我想了一會兒,最後用了20分鐘解出這題,撈到個第8名真是超爽der。20分鐘0秒創了我個人史上最快紀錄,之前保持的最快紀錄是解第581題的20分55秒,那時拿到了第5!

拍個照留念一下,以後要拿前10名,機會不太多了。

2019年1月21日 星期一

ProjectEuler 652 - Solution

這大概是我題目讀得最久的一次。花了將近一個小時還是讀不懂這兩句。

  • $\quad \, \, \, \, g(m_1,n_1)=g(m_2,n_2)$ if any integers $a,b,e,f$ fulfilling 1. or 2. can be found
  • and $\, g(m_1,n_1) \ne g(m_2,n_2)$ if no integers $a,b,e,f$ fulfilling 1. or 2. can be found

  • 最後發覺時間不能再耗下去,決定從題目給的測資下手,$D(5)=13$, $D(10)=69$, $D(100)=9607$ 且 $D(10000)=99959605$

    然後靈機一動,想到會不會是指那個?試了一下果然是....
    原來$D(N)$是指在$2\le m, n\le N$的情況下${log}_mn$不同值的個數。例如${log}_22$跟${log}_33$的值都是1,因此視為相同。

    很快的寫了程式驗證一下,果然是 $D(5)=13$, $D(10)=69$, $D(100)=9607$ 且$D(10000)=99959605$