zoukankan      html  css  js  c++  java
  • 《灯亮or灯灭》 --有个有趣的数论问题

    这个问题是在网易公开课上看到的,传送门:http://open.163.com/movie/2016/7/4/U/MBQOS0ID9_MBQOSMH4U.html

    问题描述:

      有100个灯泡,编号为1~n,开始都是灭的off状态,在第i回合按下所有编号为i倍数的的开关,灯泡转换一次状态,100回合,问最后有多少灯泡是on亮着的?

    问题解析:

      提示:每一轮我们按了什么编号呢?

      回合和编号有什么关系?

      结果:

      如果当前回合是该灯泡编号的因数,该灯泡一定会被按。回合数范围是0~100,那么问题也就转换成了:

      例如:

    编号8号等,它的因数有1,2,4,8,那么它将在1,2,4,8回合会被按一次,结果最后还是off状态,因为因数的个数为偶数次。

    结论:

      所以最终也就变成了找灯泡编号的因数有奇数个的个数,因数都是成对出现的,只有完全平方数,最后一个对是相同的,那么就找1~n,i^2小于100即可。

    那么就有 1 4 9 16........81 100.

      观察这些数的分布:

      

      相差成奇数递增间隔的分布,1到4,4到9,9到16,分别隔3,5,7.

    Over..............

  • 相关阅读:
    leetcode 137
    leetcode 134
    133. Clone Graph
    leetcode 131
    leetcode 130
    mac uwsgi ssl issue handler
    leetcode 85 Maximal Rectangle golang
    leetcode 84 golang
    leetcode 61
    C# 后台实现一次上传多个文件
  • 原文地址:https://www.cnblogs.com/zhangmingzhao/p/7253947.html
Copyright © 2011-2022 走看看