100명이 지나갑니다 정보
100명이 지나갑니다
본문
초 100개가 복도에 일렬로 늘어져있습니다.
처음에 초 100개가 모두 꺼져있는 상황입니다.
그 복도를 100명의 사람이 순차적으로 지나갑니다.
첫번째 사람이 지나가면서 100개의 초에 불을 켭니다.
두번째 사람이 지나가면서 2의 배수번째 초에 불이 켜져있으면 끄고, 불이 꺼져있으면 켭니다.
세번째 사람이 지나가면서 3의 배수번째 초에 불이 켜져있으면 끄고, 불이 꺼져있으면 켭니다.
네번째 사람이 지나가면서 4의 배수번째 초에 불이 켜져있으면 끄고, 불이 꺼져있으면 켭니다.
..... 계속 이런 식으로 진행합니다.
아흔아홉번째 사람이 지나가면서 99의 배수번째 초에 불이 켜져있으면 끄고, 불이 꺼져있으면 켭니다.
백번째 사람이 지나가면서 100의 배수번째 초에 불이 켜져있으면 끄고, 불이 꺼져있으면 켭니다.
100명이 지나간 후에 불이 켜져있는 초는 ??
몇번째 초인지, 총 몇개가 켜져있을까요?
처음에 초 100개가 모두 꺼져있는 상황입니다.
그 복도를 100명의 사람이 순차적으로 지나갑니다.
첫번째 사람이 지나가면서 100개의 초에 불을 켭니다.
두번째 사람이 지나가면서 2의 배수번째 초에 불이 켜져있으면 끄고, 불이 꺼져있으면 켭니다.
세번째 사람이 지나가면서 3의 배수번째 초에 불이 켜져있으면 끄고, 불이 꺼져있으면 켭니다.
네번째 사람이 지나가면서 4의 배수번째 초에 불이 켜져있으면 끄고, 불이 꺼져있으면 켭니다.
..... 계속 이런 식으로 진행합니다.
아흔아홉번째 사람이 지나가면서 99의 배수번째 초에 불이 켜져있으면 끄고, 불이 꺼져있으면 켭니다.
백번째 사람이 지나가면서 100의 배수번째 초에 불이 켜져있으면 끄고, 불이 꺼져있으면 켭니다.
100명이 지나간 후에 불이 켜져있는 초는 ??
몇번째 초인지, 총 몇개가 켜져있을까요?
추천
0
0
댓글 10개

아빠~~~~~
팔팔이 아저씨가 촛불 다 껐어~
팔팔이 아저씨가 촛불 다 껐어~

배열이라니 ㅠㅠ

for ($i=0; $i<100; $i++) // 양초 초기화
$candle[$i] = -1;
for ($i=1; $i<101; $i++) // 100명의 인간
for ($j=0; $j<100; $j++) // 100개의 초
if (($j+1)%$i == 0)
$candle[$j] *= -1;
echo "켜져있는 양초 : ";
$num = 0;
for ($i=0; $i<100; $i++) // 양초 초기화
if ($candle[$i] == 1) {
echo $i+1 . ", ";
$num++;
}
echo "총 {$num}개";
-------------------------------------------------------------
켜져있는 양초 : 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 총 10개
맞나요 -_-;; 아 저 한가한 사람 아닙니다.
$candle[$i] = -1;
for ($i=1; $i<101; $i++) // 100명의 인간
for ($j=0; $j<100; $j++) // 100개의 초
if (($j+1)%$i == 0)
$candle[$j] *= -1;
echo "켜져있는 양초 : ";
$num = 0;
for ($i=0; $i<100; $i++) // 양초 초기화
if ($candle[$i] == 1) {
echo $i+1 . ", ";
$num++;
}
echo "총 {$num}개";
-------------------------------------------------------------
켜져있는 양초 : 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 총 10개
맞나요 -_-;; 아 저 한가한 사람 아닙니다.

와 정답입니다^^
이걸 코드로 짜시다니~
이걸 코드로 짜시다니~

양초 100개사서 해보려다가... 좀 아닌거 같아서 참았습니다.....-_-;;

아근데, 이런거 말고... 이게 어떻게 저 수가 나오는지 구하는 방법 좀 알려주세요. 이게 이런식으로 하는건 아닐텐데;;;;;;;;;

그렇군요

아 프로그램으로 짜면 되는군하~!
나 프로그래머였지 쩝
나 프로그래머였지 쩝
오리위즈님의 멋진 코드에 박수(보통의 상상을 초월한 해법이 아닌가 합니다.ㅎㅎ)
그런데 위 코드는 1만번 실행 되겠네요
2번은 1번을 볼 필요가 없고, 3번은 1,2 번을 볼 필요가 없고....
...........
50번은 50이하는 볼 필요가 없고 게다가 50, 100 두개의 상태만 바꾸면 되니 2번만 실행
51번 부터는 자기번호만 실행....
이렇게 하면 실행횟수는 아마도 몇백번 이하로 줄어들겠죠
아래와 같이 하면 더욱 좋지않을까 합니다
for ($j=$i-1; $j<100; $j+=$i){ // 100개의 초
그런데 위 코드는 1만번 실행 되겠네요
2번은 1번을 볼 필요가 없고, 3번은 1,2 번을 볼 필요가 없고....
...........
50번은 50이하는 볼 필요가 없고 게다가 50, 100 두개의 상태만 바꾸면 되니 2번만 실행
51번 부터는 자기번호만 실행....
이렇게 하면 실행횟수는 아마도 몇백번 이하로 줄어들겠죠
아래와 같이 하면 더욱 좋지않을까 합니다
for ($j=$i-1; $j<100; $j+=$i){ // 100개의 초
아 머리야..ㅠ