2009~2014/C/C++
[C언어 기출문제&풀이] collatz의 추측
malu
2010. 11. 10. 20:50
프로그램 명: 3nplusone
제한시간: 1 초
짝수이면 2 로 나누고 , 홀수이면 3 배해서 1 을 더하는 과정을 반복하다 1 이 되면 멈춘다.
두 양의 정수를 입력으로 받아 두 수 사이중 최대 길이를 출력하는게 문제이다.
예를 들어 3 5 가 입력으로 주어진다면
- 3 10 5 16 8 4 2 1
- 4 2 1
- 5 16 8 4 2 1
입력
두 수가 입력으로 주어진다. 두 수는 10000 이하의 양의 정수이다.출력
입출력 예
입력 3 5 출력 8
*이 문제 Collatz 추측 으로 알려져 있습니다.
소스코드
#include <stdio.h>
int main()
{
int a,b,i,j,max=0,head,cnt;
scanf("%d %d",&a,&b);
for(i=a;i<=b;i++)
{
cnt=0;
head=i;
while(1)
{
if(head%2==0) head/=2;
else head=3*head+1;
cnt++;
if(head==1)
{
if(max<head) max=cnt;
break;
}
}
}
printf("%d",max+1);
}