无意间看到群里有人发了这个网站,感觉特别不错,对这个模式产生了很大的兴趣,希望以后坚持下来,把自己关于这里的每道题的疑问,思想过程,做法和最后收获写到这里。
大家共勉
作为一位coder,首先需要掌握一门编程语言以及数学常识。我们希望你现在已经掌握了一门编程语言的基本用法。
第2333个能被2或者被3整除的正整数是多少?
被2或者被3整除的正整数依次是:2,3,4,6,8,9,10,12,14,15,16,18…。
起初第一反应是用python程序来解决 那么有了以下程序
程序1:
i = 1
count = 0
while 1:
if i % 2 == 0 or i % 3 == 0:
count += 1
if count == 2333:
print i
break
i += 1
//3500
另外看到了另一个python同学贴的代码 感觉更加靠谱
程序2:
这个同学的名字是:stephen_code
def foo3(index):
quotient, reminder = divmod(index, 4)
addend_dic = {1: 2, 2: 3, 3: 4}
return quotient * 6 + addend_dic[reminder]
print foo3(2333)
上题的思路就是讨论区第一的思路
同学 :shinian
1 2 3 4 5 6
7 8 9 10 11 12
13 14 15 16 17 18…
上面加粗斜体的数字就是 能被2或者3整除的…每6个中有4个啦
写成代码的话也可以写成下面这种:
程序3:
同学:senghoo
plus_dict = {0: 0, 1: 2, 2: 3, 3: 4}
n = 2333
print (n / 4) * 6 + plus_dict[n % 4]
其实和程序2 是异曲同工。
那么我们仔细思考后发现这个题目借助这个思路完全可以用笔做出来
看了下评论区的大虾们有用java的,c的,js的,还有用shell的,php的。总之思路都差不多。大家如果还有更好的想法可以在下面贴出来