E D R , A S I H C RSS

3N+1 Problem

ํ•™๊ต์—์„œ ๋ฌด๋ฃŒํ•จ์„ ๋‹ฌ๋ž˜๊ธฐ ์œ„ํ•ด acm programming contest ๊ธฐ์ถœ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด๋Š”๋ฐ, ToyProblems ์—์„œ๋„ ๋‹ค๋ฃฐ๋งŒํ•œ ์‰ฌ์šด ๋ฌธ์ œ๊ฐ€ ์žˆ๊ธฐ์— ์ด๋ ‡๊ฒŒ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ์›๋ฌธ๋ณด๊ธฐ

์ด ๋ฌธ์ œ๋Š”

์ธ๊ธฐ๋„:A(A,B,C), ์„ฑ๊ณต๋ฅ :๋‚ฎ์Œ(๋‚ฎ์Œ,๋ณดํ†ต,๋†’์Œ), ๋ ˆ๋ฒจ:1(1~4)

CS์—์„œ ๋“ฑ์žฅํ•˜๋Š” ๋ฌธ์ œ์˜ ์ข…๋ฅ˜๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ (์˜ˆ๋ฅผ ๋“ค์–ด, NP, Unsolvable, Recursive...) ์ด ๋ฌธ์ œ๋Š” '์ž…๋ ฅ์— ๋Œ€ํ•ด ์ถœ๋ ฅ์ด ์–ด๋–ป๊ฒŒ ๋‚˜์˜ฌ์ง€ ๋ชจ๋ฅด๋Š”' ์ด๋ผ๊ณ  ๋ถ„๋ฅ˜ํ• ๋งŒํ•œ ๊ฒƒ์— ๋Œ€ํ•œ ๋ถ„์„์„ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. (ํ•ด์„์ด ์• ๋งคํ•˜๊ตฐ์š”; )

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ๋‹ค
1. input n
2. print n
3. if n == 1 then STOP
4.    if n is odd then n = 3n + 1
5.    else n = n/2
6. GOTO 2

๋งŒ์•ฝ ์ž…๋ ฅ์œผ๋กœ 22๊ฐ€ ์ฃผ์–ด์กŒ์„๋•Œ ์ถœ๋ ฅ๊ฐ’์€ 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 ๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ฐ„๋‹จํ•ด ๋ณด์ด์ง€๋งŒ n์˜ ๊ฐ’์ด 1๋กœ ๋˜์–ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ข…๋ฃŒ๋ ์ง€๋Š” ๋ชจ๋ฅด๋Š” ์ผ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Š” 0๊ณผ 1000000 ์‚ฌ์ด์˜ ์ˆซ์ž, ์•„๋‹ˆ ์ด๋ณด๋‹ค ๋” ํฐ ์ˆซ์ž์— ๋Œ€ํ•ด์„œ๋„ n์˜ ๊ฐ’์ด 1์ด ๋œ๋‹ค๊ณ  ์ฆ๋ช…๋˜์—ˆ๋‹ค.

์ž…๋ ฅ์œผ๋กœ 22๊ฐ€ ์ฃผ์–ด์กŒ์„๋•Œ, ์ถœ๋ ฅ๋˜๋Š” ๊ฐ’์˜ ์ˆ˜ n(22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1) ๋Š” 22 16์ด๋‹ค. ์ด๋ฅผ n์— ๋Œ€ํ•œ cycle-length ๋ผ๊ณ  ํ•œ๋‹ค.

์ •์ˆ˜ i์™€ j ์— ๋Œ€ํ•ด ๋‘ ์ˆ˜ ์‚ฌ์ด์— ์กด์žฌํ•˜๋Š” cycle-length ๊ฐ’๋“ค์ค‘์˜ ์ตœ๋Œ€๊ฐ’์„ ๊ตฌํ•  ๊ฒƒ์ด๋‹ค. ์ž…๋ ฅ์€ ์•„๋ž˜์™€ ๊ฐ™์ด ํ•œ ์ค„์— ํ•œ ์Œ์˜ ์ •์ˆ˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ์ถœ๋ ฅ๊ฐ’์€ ์ด ๋‘ ์ •์ˆ˜ ์‚ฌ์ด์˜ cycle-length ์ค‘์—์„œ ์ตœ๋Œ€๊ฐ’์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ž…๋ ฅ

1 10
100 200
201 210
900 1000

์ถœ๋ ฅ

1 10 20
100 200 125
201 210 89
900 1000 174

ํ’€์ด

์ž‘์„ฑ์ž ์‚ฌ์šฉ์–ธ์–ด ๊ฐœ๋ฐœ์‹œ๊ฐ„ ์ฝ”๋“œ ์‹คํ–‰์‹œ๊ฐ„(i=1,j=999999 ๊ธฐ์ค€ 4์ดˆ ํ†ต๊ณผ)
๊ฐ•ํฌ๊ฒฝ Python 1์‹œ๊ฐ„ 3N+1Problem/๊ฐ•ํฌ๊ฒฝ X
ํ™ฉ์žฌ์„  Python ? 3N+1Problem/ํ™ฉ์žฌ์„  .
๊น€ํšŒ์˜ C++ ? 3N+1Problem/๊น€ํšŒ์˜ .
๋ฌธ๋ณด์ฐฝ C++ ? 3N+1Problem/๋ฌธ๋ณด์ฐฝ X
๊ตฌ์ž๊ฒธ C ? 3N+1Problem/๊ตฌ์ž๊ฒธ .
์‹ ์žฌ๋™ C++ 10๋ถ„ 3N+1Problem/์‹ ์žฌ๋™ .
Leonardong Python 46๋ถ„ 3N+1Problem/Leonardong .
๊ณฝ์„ธํ™˜ C++ ? 3N+1Problem/๊ณฝ์„ธํ™˜ .
1002 Python 13๋ถ„ 3N+1Problem/1002 .
1002 Python 30๋ถ„ 3N+1Problem/1002_2 No-Psyco : 9.25์ดˆ, With-Psyco : 3.8์ดˆ
ํ—ˆ์•„์˜ C++ 1์‹œ๊ฐ„ 20๋ถ„ 3N 1Problem/ํ—ˆ์•„์˜ .
์ด๋„ํ˜„ C++ 1์‹œ๊ฐ„ 3n+1/์ด๋„ํ˜„ .
์ž„์ธํƒ HaskellLanguage 30๋ถ„ ์—ฌ๊ธฐ .
๊น€์ƒ์„ญ C++ ์—„์ฒญ..ใ…กใ…œ 3N+1/๊น€์ƒ์„ญ .

See also BioinfoWiki:AlgorithmQuiz/3Plus1

๋ฌธ์ œ 2ํƒ„


  • ๊ธฐ์กด์˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์„œ ๊ฐ€์žฅ ํฐ Cycle Length ๊ฐ€ ์•„๋‹Œ 3๋ฒˆ์งธ๋กœ ํฐ Cycle Length ๋ฅผ ๊ตฌํ•ด๋ณด์„ธ์š”.
    ์ž‘์„ฑ์ž ์‚ฌ์šฉ์–ธ์–ด ๊ฐœ๋ฐœ(์ˆ˜์ •)์‹œ๊ฐ„ ์ฝ”๋“œ
    1002 Python 16๋ถ„(3๋ถ„) .

์“ฐ๋ ˆ๋“œ

์‹คํ–‰์‹œ๊ฐ„(i=1,j=1000000 ๊ธฐ์ค€ 4์ดˆ ํ†ต๊ณผ)๋Š” ํŒŒ์ด์ฌ์˜ ๊ฒฝ์šฐ ๊ฐ€๋Šฅํ• ๋Ÿฐ์ง€ ๋ชจ๋ฅด๊ฒ ๋„ค์š”. ๋‚˜๋ฆ„๋Œ€๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ณด๊ฐ•ํ–ˆ๋Š”๋ฐ๋„ 1, 100000์— ๋นŒ๋นŒ ๊ฑฐ๋ฆฌ๋‹ˆ...--๊ฐ•ํฌ๊ฒฝ


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:15
Processing time 0.0067 sec