切換
舊版
前往
大廳
主題

ZeroJudge - d291: 自守數 解題心得

Not In My Back Yard | 2018-08-31 22:27:50 | 巴幣 0 | 人氣 282

題目連結:

題目大意:
現定義自守數:一數為N位長的十進位數字,平方後的尾N位仍為原本的數字。(有前導0也算是為自守數)

現給定一正整數N(0 < N ≦ 1000),求N位長的自守數(會有兩個,由小到大輸出,前導0不能省略)。

P.S.:0跟1在此題不算進自守數,儘管實際上它們符合定義。

解題思維:
利用餘數的性質。如果現已知長度為2的5結尾的自守數,則下一位可以這樣求:
因此長度為3以5做結尾的數字為625。

6結尾的則是(同樣也知道長度為2的):
因此長度為3的6結尾自守數為376。

對於5結尾而言,下一位數的頭即是前一位進位進來的數字+去頭尾的剩餘數字做十字交乘之總和,然後將結果取10的餘數。

對於6結尾,與5類似,可是加總的結果要加上負號,一樣要取10的餘數,且要取正。

以此類推,推到N=1000即可完成需求。




註:關於自守數有著一個特別性質的猜想。同樣是N位的自守數(0跟1一樣除外),其總和總是10 ^ N+1。
5+6=11、25+76=101、625+376=1001……
目前不確定此性質是否對所有的N都符合。


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

創作回應

更多創作