어떤 정수 n에서 시작해 n이 짝수면 2로 나누고, 홀수면 3을 곱한 다음 1을 더한다(3n+1).
이렇게 해서 새로 만들어진 숫자를 다시 n으로 놓고 n = 1일 때까지 계속 반복해서 수열을 만들어 낸다.
이 문제 풀려고 만든거거든
#include <stdio.h>
int main()
{
long int a,i,b;
a=0;
i=0;
b=0;
while(1){
scanf(\"%d\",&a);
if(a==0) break;
while(1){
++i;
if(a%2==0) a=a/2;
else a=a*3+1;
printf(\"%d \",a);
if(a==1) break;
if(i==100000){
printf(\"\\n%d error\",a);
break;
}
}
printf(\"\\n%d 단계에서 성공\\n\",i);
i=0;
}
return 0;
}
... 인데
다른 수는 다 괜찮게 풀려
근데 꼮 3732423 에서만 애러가 걸려서 탈출을 못하고 멍멍대네
계산기로 두들겨보니까 잘만풀리는데 저놈에서만 -1 -2 -1 -2 -1 -2 -1 -2
왜그럴까.
간만에 와서 질문갤러리가 된 프갤에 질문하는거도 참 뭐하지만
맘놓고 물어볼데가 여밖에 없다 형들 도와줘
터보씨쓰냐?
비쥬얼C 확장자는 .c로 저거말고 411111111 같은거도 루프걸리는데
범위를넘어가니까~
저게 오버플로우가 되나?
이런 아리까리한 문제는 괜찮아. 중간에 오버플로우 나서 그래. 비주얼C++이면 long int 대신 __int64 써봐.
디-횽 저 long int 4바이트 짜리 아니야?
오버플로우 아냐
우왕 해결됬다! 형들 전부 감사함니다
3n+1의 묘미는 예측불가능성에 있츰. 생각없이 고른 수가 얼마나 재수없을수 있는지 보여줌.