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 ^^ --- 고운 하루
=========================
댓글 달기