티스토리 뷰
프로그램 명: 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
에서 3 은 길이가 8 로 최대 이다.
입력
두 수가 입력으로 주어진다. 두 수는 10000 이하의 양의 정수이다.
출력
입출력 예
입력 3 5 출력 8
12345678910111213141516171819202122232425262728293031323334 #include <stdio.h>int maxNum;int func(int num) // 어떤 수 num 이 1일 될때까지 변환{int cnt = 1; // 길이while(num!=1){cnt++;if(num%2==0)num /= 2;elsenum = 3 * num + 1;}return cnt;}int main(){int from,to;scanf("%d %d",&from,&to);int diff = to - from; // 숫자가 꼭 증가하는 형태로 주어지지 않는다.do{int temp = func(from);if(maxNum < temp) maxNum = temp;from += (diff < 0)? -1:(diff>0)? 1:diff; // 차이로 증감을 결정}while(from != to);printf("%d\n",maxNum);}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 파이선
- 우분투
- Multimedia
- 캡슐화
- Android
- 다형성
- 리눅스
- markdown
- media
- 추상화
- Polymorphism
- Video
- Encapsulation
- Object Oriented Programming
- Class
- OOP
- player
- 객체지향
- readme.md
- ContentResolver
- 클래스
- Linux
- ubuntu
- 마크다운
- 올림픽
- abstraction
- 크롤링
- 입장권
- 평창
- 동계
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함