문제

경찰대학 용인캠퍼스에는 나무 한 그루가 있다. 경찰대학생이 떠나간 용인캠퍼스의 토지는 매우 비옥해서 나무가 잘 자란다. 나뭇가지는 나무의 중심 줄기에서 아래와 같은 규칙을 이용해서 뻗어나온다.

  1. 나뭇가지는 자랄 때마다 한 번에 2갈래로 갈라지면서 성장한다. 예를 들어, 중심줄기에서 나온 첫 번째 가지의 개수는 2개이며, 두 번째 가지의 총 개수는 첫 번째 가지의 수에 2를 곱해 4개이다.
  2. N번째 나뭇가지의 길이는 N-1번째 나뭇가지의 길이의 R/100배이고, 소수점 이하는 버린다. 0번째 나뭇가지는 중심줄기이다.
  3. N번째 나뭇가지의 길이가 5cm 이하가 되는 경우, N-1번째 가지에서 성장을 멈춘다.

중심 줄기의 길이 L이 입력으로 주어졌을 때, 중심 줄기를 제외한 나뭇가지의 길이의 합을 구하시오.

입력

첫 번째 줄에 중심 줄기의 길이 L(6 ≤ L ≤ 10,000)이 주어진다. 둘째 줄에 비율 R(1 ≤ R ≤ 99)가 주어진다. L의 단위는 cm이다.

출력

첫 번째 줄에 중심 줄기를 제외한 나뭇가지의 총 길이의 합을 cm단위로 출력하며, 소숫점 이하는 버린다. 총 길이의 합이 10^6보다 작거나 같은 입력만 주어진다.

예제 입력 1

500
30

예제 출력 1

584
  1. 1번째 가지의 길이는 ⌊500 × (30/100)⌋ = 150
  2. 2번째 가지의 길이는 ⌊150 × (30/100)⌋ = 45
  3. 3번째 가지의 길이는 ⌊45 × (30/100)⌋ = 13
  4. 4번째 가지의 길이는 ⌊13 × (30/100)⌋ = 3.9 이고, 5cm 이하라서 자라지 않는다.

총 길이의 합은 2×150 + 4×45 + 8×13 = 584cm이다.


더보기

Solution

#include<stdio.h>

int main(void)
{
	int L, R, sum=0, pow=1;

	scanf("%d", &L);
	scanf("%d", &R);

	while(L>5)
	{
		if(pow!=1)
			sum+=pow*L;
		L*=R;
		L/=100;
		pow*=2;
	}

	printf("%d\n", sum);
	return 0;
}
728x90

+ Recent posts