切換
舊版
前往
大廳
主題

ZeroJudge - d462、d465、d467 解題心得

Not In My Back Yard | 2018-12-11 16:52:21 | 巴幣 0 | 人氣 218

題目連結:


題目大意:
註:因為這三題要求差不多,因此放在一起講。

第一題:
給定四個正整數 a、n、i、k ( 1 < a < 100 , 1 ≦ n、i、k ≦ 10, 000 ),求 a ^ n 從左邊(最高位)第 i 個數字輸出連續 k 位(如果長度小於k,則輸出到結尾為止)。

第二題:
a、n、i、k的範圍變為 1 < a、n < 10, 000,1 ≦ i、k ≦ 30, 000 。

第三題:
a、n、i、k的範圍變為 1 < a < 1, 000, 000 , 1 ≦ n、i ≦ 10, 000 , 1 ≦ k ≦ 100, 000 。



範例輸入:
第一題:
2 64 6 8

第二題:
3 536 135 56

第三題:
89 525 3 745



範例輸出:
第一題:
74407370

第二題:
77353152383916167705006185104046144992000730527283912844

第三題:
900074858794248084683590806917822295968120106347770756232645628411245317748
811685210026225689158060536670674237146198649944041130088982257632196971952
608582778434104442289308363025606166278307966465015147422525482211545100388
576024832587391616670410583471232093988593743741508252018515143619792303324
819777690563414177634516427762311358756522586228758072231970078605682189997
715910772196732416504921026031919291662915965931667697802659390255381480080
667658645517959842944454069235938159443551260796142741694400419422480641175
096042414197988296857634456586426623263394321183103183730937572345138040003
195787297034785567031719116436234250118478988895795676003649424395814306528
7307742815243785149839140079204289368947684289791495442538935770673458


解題思維:
這三題我相信有 Python 等內建大數運算的語言,應該是沒有什麼問題的。而 C++ 的話,則可以參見本人以前的文章

乘出結果(a ^ n)後,可以轉成字串或是就直接使用本來的陣列去實作,照著題目的要求從最高的第 i 位輸出 k 位數。但是記得要最佳化輸出,還有一些特殊狀況(比如說數字不夠 k 位數之類的)。

然而,由於原作者似乎出了一些差錯(而且作者也沒再上線了),所以第三題的測試資料有一些問題。需要在最後輸出以下三行的字串:
「From tomcat6 Fri Mar 15 09:53:56 2013」
「To: world" 」
「Subject: "Hello」

c++ 語法的話便是:
cout << "From tomcat6 Fri Mar 15 09:53:56 2013\nTo: world\"\nSubject: \"Hello";


此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作