일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 참조은요양병원
- C
- API
- 정보올림피아드
- 수학영재원
- 반복문
- 리눅스 명령어
- 정보영재원
- 영재교육원
- 독서 감상문
- 풀이&소스코드저작권:왕유승
- 독후감
- For문
- 프로그래밍
- 리눅스
- 제어문
- 알고리즘
- 다중반복문
- c언어
- 정보과학
- Backdoor
- Linux
- DBMS
- 자료구조
- C++
- if문
- 배열
- IT
- 백도어
- 문제출저:www.dovelet.com
Archives
- Today
- Total
되는대로 살자
[C언어 기출문제&풀이] 우물 탈출 본문
프로그램 명: climbing
제한시간: 1 초
한 마리벌레가 n 인치 깊이의 우물 바닥에 있다. 벌레는 매 분당 u 인치를 오를수 있고 다시 일분을 쉬고 다시 오르고를 반복한다. 쉬는 동안은 d 인치를 미끄러진다.
이 벌레가 우물 밖으로 빠져 나오는데는 얼마나 걸릴까? 분 단위로 계산하고 바닥에서 꼭대기까지 올라오면 다 빠져 나왔다고 간주한다.
입력
여러개의 테스트 데이터가 입력으로 주어진다. 각 테스트 데이터는 3 개의 양의 정수 n,u,d 가 입력으로 주어진다. 이 변수들은 위에서 설명한 그대로 이다. ( d < u , n <100 )n 이 0 이면 입력의 끝이다.
출력
매 입력당 벌레가 우물을 빠져 나오는 필요한 분을 출력한다.입출력 예
입력 10 2 1 20 3 1 0 0 0 출력 17 19
출처: East Central North America Region 2002
풀이 : 유명한 우물 탈출 문제다. 여기서 중요한 것은 올라가는 것과 미끄러지는 차를 이용하되
도착을 하는 것이므로 마지막 날 올라갈 때는 한번에 올라가게 된다는 것이다.
소스코드
01 |
#include <stdio.h> |
02 |
|
03 |
int main() |
04 |
{ |
05 |
int n,u,d,i,nowpos[100]={0,},count=0; |
06 |
while (1) |
07 |
{ |
08 |
scanf ( "%d %d %d" ,&n,&u,&d); |
09 |
if (n==0) |
10 |
{ |
11 |
for (i=0;i<count;i++) |
12 |
printf ( "%d\n" ,nowpos[i]); |
13 |
return 0; |
14 |
} |
15 |
for (i=0;i<=n*3;i++) |
16 |
{ |
17 |
if (i%2==0||i==0) |
18 |
nowpos[count]+=u; |
19 |
else |
20 |
nowpos[count]-=d; |
21 |
if (nowpos[count]>=n) |
22 |
{ |
23 |
nowpos[count]=i+1; |
24 |
break ; |
25 |
} |
26 |
} |
27 |
count++; |
28 |
} |
29 |
} |
'2009~2014 > C/C++' 카테고리의 다른 글
[C언어 기출문제&풀이] 반대로 출력 (0) | 2010.11.02 |
---|---|
[C언어 기출문제&풀이] 최대 수 연결 (0) | 2010.11.02 |
[C언어 기출문제&풀이] 우울한 진진 (0) | 2010.11.02 |
[C언어 기출문제&풀이] 완전수 (0) | 2010.11.02 |
[C언어 기출문제&풀이] 암스트롱 수 (1) | 2010.11.02 |