programming challenges 3n+1 문제
글쓴이: 4612123 / 작성시간: 수, 2009/07/22 - 12:49오후
=ㅁ= 입력값 처리며, 결과값도 제대로 한거같은데.. 안되네요 왜일까요?ㅜㅁㅜ
#include <stdio.h> #include <stdlib.h> long CycleFun(long tmp); int main() { long i,j; long cycle=0,max_cycle=0; long tmp; scanf("%ld %ld",&i,&j); if(i <= 0 || j <= 0 || i >= 1000000 || j >= 1000000) { printf("Input Error !! \n"); exit(0); } tmp = i; while(tmp <= j) { cycle = CycleFun(tmp); if(cycle > max_cycle) max_cycle = cycle; tmp++; } printf("%ld %ld %d\n",i,j,max_cycle); return 0; } long CycleFun(long tmp) { long count=0; while(tmp!=1) { if(tmp%2 == 0) tmp = tmp/2; else tmp = tmp*3 + 1; count++; } return count+1; }
Forums:
max_cycle의 초기 값이
max_cycle의 초기 값이 0이라,
계속 조건문이 false로 처리되는거네요.
-----------------
한글을 사랑합니다.
-----------------
한글을 사랑합니다.
오버플로우~~~
해당 범위안에 딱 하나의 수가 long 범위를 넘어가서 무한루프에 빠집니다.
-로 가버려서
그러므로 long 을 unsigned long 으로 바꿔보세요.
고운 하루되시길..
=========================
CharSyam ^^ --- 고운 하루
=========================
=========================
CharSyam ^^ --- 고운 하루
=========================
댓글 달기