Re: 請問小弟的寫法哪裡錯了
我覺得這是數學問題耶~~~
記不記得我們國中就學過,
判斷一個數是否能被3整除,
直接看他每個位數相加後是否能被三整除,
所以"12",因為1+2=3能被3整除,故12能被3整除。
同理,"14",因為1+4=5,5/3會餘2,所以14/3會餘2。
因此,再看你的問題的話,你可以改個方式寫,
把所有數字的每一位數相加,然後再除以3,看餘多少就可以啦~~
你可以先計算寫到第201位是哪一個數,
你似乎已經知道是103?假設是103好了,
那此時你可以計算從1到103中,
1、2、...、9各出現幾次,
再把他們各乘以出現的次數,
然後再一次除以3,就可以啦~~
至於各出現幾次,其實也很好算,
1~9在1~99中當個位數的次數各有10次,
然後加上1~9當十位數的次數各有10次,
至於100、101、102、103的話,就是1+1+1+1+2+1+3=10,
1+2+3+...+9=45,45*20=900,900+10=910,910/3=303餘1,
所以你要算的答案是1囉~~
如果還要更精簡一點,那麼3、6、9可以不要算進去,
也就是說,直接算1+2+4+5+7+8=27,27*20=540,
540+10=550,550/3=183餘1,所以答案還是餘1。
嗯~~這個過程要寫成程式,應該會相對容易許多?!
-----
嗯~~野人獻曝一番...如果有什麼說錯的,麻煩請各位大大指正。謝謝!
※ 引述《Kazarinov (~~~~~~~~~~~~~~~~~~~~~~~)》之銘言:
: Q:把由1開始的自然數依次寫下去,一直寫到201位為止:
: 12345678910111213…….。這個數除以3的餘數是幾?
: A:
: x=0;
: for i=1:9
: x=x*10+i
: end
: for i=10:99
: x=x*100+i
: end
: for i=100:103
: x=x*1000+i
: end
: mod(x,3)
: ~~~~~~~~~~~~~~~~~
: 答案不是應該0,1,2其中之一嗎
: 可是我跑出來卻不是
: 麻煩大家賜教!!
: 或是提供解此題的其他方法也行
: 多謝!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.85.7.111
※ 編輯: HeathLedger 來自: 210.85.7.111 (04/24 02:32)
※ 編輯: HeathLedger 來自: 210.85.7.111 (04/24 02:34)
推
04/24 08:37, , 1F
04/24 08:37, 1F
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章