프로그래밍/C·C++

통나무 최상단 개수 , 최하단 개수 판단하기

긴자손-1 2009. 10. 13. 11:13
반응형


프로그램 명: log

안정된 형태로 통나무를 쌓기 위해서는 아래 그림과 같이 최하단 부터 쌓기 시작하여 한 층 위로 올라갈 때 마다 통나무 개수가 한 개씩 줄어 들도록 해야 한다. 이 때 최상단에 놓인 통나무의 수는 바로 아래 층의 통나무 개수보다 한 개 이상 적다.

N 개의 통나무를 안정된 형태로 쌓으려고 할 때 , 최 상단에 놓일 수 있는 통나무의 개수와 이 때 최하단에 놓이는 통나무의 개수를 구하는 프로그램을 작성하시오. 단, 가능한 최하단에 놓이는 통나무의 수를 최소로 하는 답을 구하여 야 한다.

입력 형식

통나무의 개수가 입력된다. 통나무의 개수는 300 이하의 자연수이다.

출력 형식

최 하단과 최 상단에 놓일 통나무 수를 출력한다.

입출력 예

입력
18
출력
6 3
입력
19
출력
6 1


#include <stdio.h>


void main(){

int n,temp,i=1,j,height;


scanf("%d",&n);

temp = n;

while(n>0){

n = n-i;

i++;

}

height=i-1;

printf("%d",height);

j=height;

while(temp>height){

temp=temp-height;

height--;

}

printf(" %d",temp);

}


반응형