이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
황재동
가입: 2014년 9월 2일 올린 글: 80
|
올려짐: 2014년12월17일 22:30 주제: Check_exp 에서 |
|
|
repeat (
repeat (
repeat ( 50) read + 60001 - (repeat(10) read) ) read
+ 2147483648 -( repeat (483648) read + 1)
)
1
과 같은 경우에
실제 생각해보면
가장 안쪽의 repeat의 조건은 항상 true
그 바깥쪽의 repeat의 조건도 항상 true 60001 - 60read
그로 인해 마지막... 쪽의 조건도 항상 true가 되어서
repeat의 내부의 값의 범위는 12001 ~ 1
이를 x라 하면
x read + 2147483648 - (483648 + 483648read)
= 2147000000 + (483648 + x) read > 0
true를 return하는게 맞긴 합니다만,,,,
이렇게 read의 범위에 따른 값도 해주어야 하나요?
https://ropas.snu.ac.kr/phpbb/viewtopic.php?t=4709
이때의 답변 ( 권장하는 방법은 식이 가질 수 있는 범위를 고려하는 것입니다.)
로 미루어 보았을때...
해주어야 하는게 맞겠죠.....? |
|
위로 |
|
 |
jaewooklee
가입: 2014년 10월 3일 올린 글: 23
|
올려짐: 2014년12월17일 23:52 주제: |
|
|
저도 이 글을 보니 궁금해진 것이, 저희 프로그램이 2147483648같은 큰 수도 처리할 수 있어야 하나요? int가 32비트라고 해도 2147483647까지밖에 표현이 안되는데 OCaml은 garbage collection 때문에 int가 31비트라서 1073741823이상의 수는 표현하지 못하는 것으로 알고 있습니다. 사이즈가 너무 큰 input이 들어오는 경우는 고려하지 않아도 되는 것이겠죠? |
|
위로 |
|
 |
김윤승
가입: 2014년 9월 1일 올린 글: 452 위치: 302동 312-2호
|
올려짐: 2014년12월18일 0:30 주제: |
|
|
read의 값의 범위를 고려하는 것이 좋습니다.
큰 수에 대해서는 생각하지 않으셔도 됩니다. |
|
위로 |
|
 |
|