2 posts tagged “quiz”
1부터 20까지의 수의 각 자리를 전부 더하면
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 1+0 +
1+1 + 1+2 + 1+3 + 1+4 + 1+5 + 1+6 + 1+7 + 1+8 + 1+9 + 2+0
= 102 입니다.
그렇다면 1부터 1000000까지의 수의 각 자리를 전부 더하면 얼마가 될까요?
일단 답부터 이야기하자면 27000001 입니다.
그냥 무식하게 다음과 같이 계산했지요.
문자열 다루기가 편한 perl을 써서...
#!/usr/bin/perl
$start_number = 1;
$end_number = 20;
$total_sum = 0;
for $i ($start_number .. $end_number) {
$small_sum=0;
for $j (split '',$i) {
$small_sum += $j;
}
$total_sum += $small_sum;
print "$i [$small_sum] [$total_sum]\n";
}
print "total sum of every digit : $total_sum\n";
그런데 이게 이렇게 무식하게 더하라는 게 아니라 뭔가 법칙을 찾아서 풀어야 될 것 같은데 뭔지 모르겠네요 ^^;
아하 좀 생각하니 알겠습니다.
1부터 100까지 각 자리의 합은 901인데,
첫째자리(단단위)는 0~9의 한 사이클이 열번 반복됩니다. 따라서 (0+1+...+8+9) * 10 = 45 * 10 = 450
두째자리(십단위)는 0 열번, 1열변, 2열번과 같이 반복됩니다. 순서는 다르나 합은 역시 450
셋째자리(백단위)는 1만 한번 나옵니다. 따라서
450 + 450 + 1 = 901 입니다.
즉 450 * 2 + 1 = 901 입니다.
1부터 1000000까지의 각 자리의 합은 27000001 인데,
첫째자리(단단위)는 0~9의 한 사이클이 100000번 반복됩니다. 따라서 45 * 100000 = 4500000
첫째자리부터 여섯째자리까지는 0~9가 반복되는 속도는 다르지만 결국 합은 동일하므로
4500000 * 6 + 1(일곱째자리) = 27000001 입니다.
이제까지의 논리 퍼즐 중 가장 어려운 퍼즐
문제는 아래와 같다 (문제 출처 : http://no-smok.net/nsmk/TheHardestLogicalPuzzleEver )
세 명의 신 A, B, C가 있고 그들은 각각 True, False, Random이라고 불리우는데, 누가 누구인지는 모른다. True는 항상 진실을 말하고, False는 항상 거짓을 말하고, Random은 "random"하게 진실과 거짓을 섞어서 말한다. 당신의 임무는 세번의 yes-no(네-아니오) 질문을 통해서 누가 A, B, C인지 알아내는 것이다. 질문을 할 때는 한 번에 한 신에게만 물어봐야 하는데, 반드시 세 명에게 모두 물어볼 필요는 없다. 신들은 한국어(혹은 영어)를 알아들을 수 있지만 모든 대답은 그들의 고유한 언어로 주어지는데, "da"와 "ja"가 그것이다. 이 단어들은 각각 "네/아니오"의 의미를 갖고 있지만, 어느쪽이 "네"이고 어느쪽이 "아니오"인지는 모른다.
위의 문제 출처를 보면 풀이 PDF파일을 다운받을 수 있는 주소가 있는데, PDF파일은 영어로 되어 있다.
그래서 번역을 해 봤다. 여기서 보면 된다. : http://liquidbird.springnote.com/pages/530014
( 문제를 처음 본 건 몇 년 전인데, 풀이는 며칠 전에 처음 보고 겨우겨우 이해했다. 정말 어렵다. )
자 이제 퍼즐의 세계로 빠져 보세요!