面试题一,面试题
最近在网上看见一道面试题,随手做了一下,也作为我开始写博客的第一篇开始。
因为我最近在学习PHP,所以我就用PHP来解决它,不过天下语言是一家,其他的语言也可参照思想。题目比较简单,如下:
大厅里有100盏灯,每盏灯都编了号码,分别为1-100。每盏灯由一个开关来控制。(开关按一下,灯亮,再按一下灯灭。开关的编号与被控制的灯相同。)开始时,灯是全灭的。现在按照以下规则按动开关。
第一次,将所有的灯点亮。
第二次,将所有2的倍数的开关按一下。
第三次,将所有3的倍数的开关按一下。
以此类推。第N次,将所有N的倍数的开关按一下。
问第100次按完以后,大厅里还有几盏灯是亮的。
方法如 下:
<span> 1</span> <?<span>php </span><span> 2</span> <span> 3</span> <span>//</span><span>totle:总共的灯盏数,times:按动开关的次数</span> <span> 4</span> <span>function</span> switchLight(<span>$totle</span>,<span>$times</span><span>){ </span><span> 5</span> <span>//</span><span>定义开关打开和关闭的状态属性</span> <span> 6</span> <span>$on</span>=1<span>; </span><span> 7</span> <span>$off</span>=-1<span>; </span><span> 8</span> <span>//</span><span>定义一个按动开关的动作</span> <span> 9</span> <span>$oc</span>=-1<span>; </span><span>10</span> <span>//</span><span>建立一个数组,动态存储灯盏数目,并初始化状态</span> <span>11</span> <span>$lights</span>=<span>array</span><span>(); </span><span>12</span> <span>for</span>(<span>$i</span>=1;<span>$i</span><=<span>$totle</span>;<span>$i</span>++<span>){ </span><span>13</span> <span>$lights</span>[<span>$i</span>]=<span>$off</span><span>; </span><span>14</span> <span> } </span><span>15</span> <span>//</span><span>判断没有按动开关的情况</span> <span>16</span> <span>if</span>(<span>$times</span>==0<span>){ </span><span>17</span> <span>return</span> 0<span>; </span><span>18</span> <span> } </span><span>19</span> <span>//</span><span>循环判断,并按动开关</span> <span>20</span> <span>for</span>(<span>$j</span>=1;<span>$j</span><=<span>$times</span>;<span>$j</span>++<span>){ </span><span>21</span> <span>for</span>(<span>$k</span>=1;<span>$k</span><=<span>$totle</span>;<span>$k</span>++<span>){ </span><span>22</span> <span>if</span>(!(<span>$k</span>%<span>$j</span><span>)) </span><span>23</span> <span>$lights</span>[<span>$k</span>]*=<span>$oc</span><span>; </span><span>24</span> <span> } </span><span>25</span> <span> } </span><span>26</span> <span>//</span><span>遍历出所有为on的灯,并存入新数组</span> <span>27</span> <span>$newLights</span>=<span>array</span><span>(); </span><span>28</span> <span>for</span>(<span>$r</span>=1;<span>$r</span><=<span>$totle</span>;<span>$r</span>++<span>){ </span><span>29</span> <span>if</span>(<span>$lights</span>[<span>$r</span>]==<span>$on</span><span>){ </span><span>30</span> <span>$newLights</span>[]=<span>$r</span><span>; </span><span>31</span> <span> } </span><span>32</span> <span> } </span><span>33</span> <span>return</span> <span>$newLights</span><span>; </span><span>34</span> <span>35</span> <span> } </span><span>36</span> <span>37</span> <span>$newLights</span>=switchLight(100,100<span>); </span><span>38</span> <span>echo</span> "结果有".<span>count</span>(<span>$newLights</span>)."盏灯亮,具体如下:"<span>; </span><span>39</span> <span>foreach</span>(<span>$newLights</span> <span>as</span> <span>$light</span><span>){ </span><span>40</span> <span>echo</span> <span>$light</span><span>; </span><span>41</span> <span>echo</span> "\n"<span>; </span><span>42</span> <span> } </span><span>43</span> ?>
有更好的方法,会后续更新。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

드림위버 CS6
시각적 웹 개발 도구

WebStorm Mac 버전
유용한 JavaScript 개발 도구

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는
