백준17293 맥주 99병

문제 링크

  • http://icpc.me/17293

문제 출처

  • 제3회 천하제일 코딩대회 예선 C번

풀이

대회 중 많은 학생들이 맞왜틀 을 외치게 된 원인입니다.

문제를 정말 읽지 않으면 틀리게 됩니다. 1을 출력하는 경우를 잘 처리해줍시다.

전체 코드

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
#include <bits/stdc++.h>
using namespace std;

int  x;
void f(int n){
	if(n == 0){
		printf("No more bottles of beer on the wall, no more bottles of beer.\n");
		if(x != 1) printf("Go to the store and buy some more, %d bottles of beer on the wall.", x);
		else printf("Go to the store and buy some more, %d bottle of beer on the wall.", x);
		return;
	}
	if(n == 1){
		printf("1 bottle of beer on the wall, 1 bottle of beer.\n");
		printf("Take one down and pass it around, no more bottles of beer on the wall.\n\n");
		return;
	}
	printf("%d bottles of beer on the wall, %d bottles of beer.\n", n, n);
	if(n-1 != 1) printf("Take one down and pass it around, %d bottles of beer on the wall.\n\n", n-1);
	else printf("Take one down and pass it around, %d bottle of beer on the wall.\n\n", n-1);
}

int main(){
	int n; cin >> n;
	x = n;
	for(int i=n; i>=0; i--) f(i);
}