728x90
▶문제 : 우박수 길이 (3n+1) (small) (codeup.kr)
▶코드 작성
#include <stdio.h>
int main()
{
int a, b, num, cnt, Mnum, Mcnt = 0;
scanf("%d %d", &a, &b);
for (int i = a; i <= b; i++)//a부터 b 사이의 수
{
cnt = 1;//마지막 1이 되는 횟수 추가
num = i;//i를 보존하기 위해
while (num != 1)//1이 될 때 종료
{
if (num % 2 == 0) num /= 2;//짝수일 때
else num = num * 3 + 1;//홀수일 때
cnt++;
}
if (cnt > Mcnt)//연산 횟수가 가장 길 때
{
Mcnt = cnt;
Mnum = i;
}
}
printf("%d %d", Mnum, Mcnt);
return 0;
}
▶해석
for문으로 a에서 b사이의 수를 반복하였고, i값을 num변수에 저장하여 while 반복문에 num값을 짝수일 때와 홀수일 때 계산하여 1이 될 때까지 반복하였다. cnt변수로 반복 횟수를 세어 가장 횟수가 많은 수를 Mcnt변수에 저장하였다.
728x90
'코드업(codeup) > C' 카테고리의 다른 글
코드업(codeup) 2033 : 사다리 게임 C언어 (0) | 2021.12.03 |
---|---|
코드업(codeup) 2008 : 오름차순? 내림차순? 2 C언어 (0) | 2021.12.03 |
코드업(codeup) 2641 : 숏다리의 계단 오르기 (Small) C언어 (0) | 2021.11.29 |
코드업(codeup) 2411 : SNS만들기 (1) C언어 (0) | 2021.11.27 |
코드업(codeup) 2024 : 숫자를 한글로 변환 C언어 (0) | 2021.11.27 |
댓글