문제
경찰대학 용인캠퍼스에는 나무 한 그루가 있다. 경찰대학생이 떠나간 용인캠퍼스의 토지는 매우 비옥해서 나무가 잘 자란다. 나뭇가지는 나무의 중심 줄기에서 아래와 같은 규칙을 이용해서 뻗어나온다.
- 나뭇가지는 자랄 때마다 한 번에 2갈래로 갈라지면서 성장한다. 예를 들어, 중심줄기에서 나온 첫 번째 가지의 개수는 2개이며, 두 번째 가지의 총 개수는 첫 번째 가지의 수에 2를 곱해 4개이다.
- N번째 나뭇가지의 길이는 N-1번째 나뭇가지의 길이의 R/100배이고, 소수점 이하는 버린다. 0번째 나뭇가지는 중심줄기이다.
- 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번째 가지의 길이는 ⌊500 × (30/100)⌋ = 150
- 2번째 가지의 길이는 ⌊150 × (30/100)⌋ = 45
- 3번째 가지의 길이는 ⌊45 × (30/100)⌋ = 13
- 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
'백준 알고리즘' 카테고리의 다른 글
<백준 알고리즘> 13699번: 점화식 (0) | 2020.12.26 |
---|---|
<백준 알고리즘> 16194번: 카드 구매하기 2 (0) | 2020.12.26 |
<백준 알고리즘> 2986번: 파스칼 (0) | 2020.12.26 |
<백준 알고리즘> 1731번: 추론 (0) | 2020.12.26 |
<백준 알고리즘> 11502번: 세 개의 소수 문제 (0) | 2020.12.26 |