The 3n + 1 problem (콜라츠 추측)
문제 출처 : http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=36
* http://ko.wikipedia.org/wiki/%EC%BD%9C%EB%9D%BC%EC%B8%A0_%EC%B6%94%EC%B8%A1
#include <stdio.h>long getMaxCycleLength(long i, long j){long n, temp;long maxCycleLength = 0;if(j < i) {temp = i;i = j;j = temp;}for(n = i; i <= j; i++) {long cycleLengh = 1;n = i;while(n != 1) {if(n%2 == 0) n >>= 1;else n = n*3 + 1;cycleLengh++;}if(cycleLengh > maxCycleLength) maxCycleLength = cycleLengh;}return maxCycleLength;}int main(int argc, const char * argv[]) {// insert code here...long i, j;while (scanf("%ld %ld", &i, &j) == 2) {long maxCycleLength = getMaxCycleLength(i, j);printf("%ld %ld %ld\n", i, j, maxCycleLength);}//printf("Hello, World!\n");return 0;}
C로 올렸더니, Ansi-C라서 //는 주석이 안먹어서 컴파일 에러...
14903796 | 100 | The 3n + 1 problem | Compilation error | ANSI C | 0.000 | 2015-02-01 13:50:29 |
다시 올렸더니...틀렸다네...몇 번이나 해봤는데...음..음.
14903982 | 100 | The 3n + 1 problem | Wrong answer | C++ | 0.318 | 2015-02-01 14:12:45 |
그래서, 구글링 해보니(해결된 소스는 세상에 많다..)...설명에 i가 j보다 항상 작다는 말이 없다...이런....그래서, i가 j보다 클 경우의 예외처리(?swap)를 하니 Accept되었다.
# | Problem | Verdict | Language | Run Time | Submission Date | |
14904442 | 100 | The 3n + 1 problem | Accepted | C++ | 0.542 | 2015-02-01 15:15:29 |
댓글
댓글 쓰기