일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- c언어
- API
- 독서 감상문
- For문
- 리눅스
- 프로그래밍
- 제어문
- C++
- 정보과학
- Linux
- 반복문
- 알고리즘
- DBMS
- C
- IT
- 자료구조
- 배열
- 다중반복문
- 백도어
- 정보올림피아드
- Backdoor
- 영재교육원
- 리눅스 명령어
- 정보영재원
- 풀이&소스코드저작권:왕유승
- if문
- 독후감
- 참조은요양병원
- 수학영재원
- 문제출저:www.dovelet.com
Archives
- Today
- Total
되는대로 살자
[C언어 기출문제&풀이] collatz의 추측 본문
프로그램 명: 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);
}
'2009~2014 > C/C++' 카테고리의 다른 글
[C언어 기출문제&풀이] 소인수 분해 (0) | 2010.11.10 |
---|---|
[C언어 기출문제&풀이] 수 이어가기 (0) | 2010.11.10 |
[C언어 기출문제&풀이] 친구 수 (0) | 2010.11.10 |
[C언어 기출문제&풀이] 정렬된 수 (0) | 2010.11.10 |
[C언어 기출문제&풀이] 거듭 제곱 테이블 (0) | 2010.11.10 |