作者HeathLedger (混乱的总和)
看板MATLAB
标题Re: 请问小弟的写法哪里错了
时间Mon Apr 24 02:31:33 2006
我觉得这是数学问题耶~~~
记不记得我们国中就学过,
判断一个数是否能被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)
1F:推 Kazarinov:我已经先用手算出答案是1了...只是想再用Matlab验算 04/24 08:37