#12 연습문제 2 풀이

연습문제 2의 해답입니다

Table Of Contents

1. [1000] A+B

#include <stdio.h> int main(void) { int a, b; scanf("%d%d", &a, &b); printf("%d", a + b); return 0; }

a, b를 입력받고, a + b를 출력했습니다.

2. [1001] A-B

#include <stdio.h> int main(void) { int a, b; scanf("%d%d", &a, &b); printf("%d", a - b); return 0; }

3. [10998] A×B

#include <stdio.h> int main(void) { int a, b; scanf("%d%d", &a, &b); printf("%d", a * b); return 0; }

4. [1008] A/B

#include <stdio.h> int main(void) { double a, b; scanf("%lf%lf", &a, &b); printf("%.9lf", a / b); return 0; }

강의자료에서 설명되지 않은 부분이 있어서 추가로 설명 드립니다.

이 문제에서는 다른 문제들과 달리 입력을 %lf 형식 지정자를 이용해서 double형 변수에 저장했습니다. 이는 나눗셈을 해야 하기 때문입니다.

만약 입력으로 1 3이 들어온다면, 1 / 3은 0.3333...입니다. 하지만 정수형 변수로는 이를 처리할 수 없기 때문에 실수형 변수를 이용해야 합니다.

또한, %.9ff와 같은 문법을 볼 수 있는데, 문제의 다음 조건 때문입니다.

실제 정답과 출력값의 절대오차 또는 상대오차가

10^{-9}
 이하이면 정답이다.

이 말의 뜻은 절댓값(우리가 작성한 코드가 내놓은 답 - 채점 서버에서 미리 준비해놓은 답)이 0.000000001보다 작아야 한다는 뜻입니다.

하지만 %lf로 출력하게 된다면, 컴퓨터에서는 기본적으로 소수점 아래 6자리까지만 출력해주게 됩니다. 답이 0.333333333라면, 0.333333까지만 출력하게 되는 것이죠. 이런 경우에 상대오차가

10^{-9}
보다 크다고 나올 수 있습니다. 따라서 .9를 사이에 넣어서 소수점 아래 9번째 자리까지 출력하겠다라고 지정해 주는 것입니다.

5. [10869] 사칙연산

#include <stdio.h> int main(void) { int a, b; scanf("%d%d", &a, &b); printf("%d\n", a + b); printf("%d\n", a - b); printf("%d\n", a * b); printf("%d\n", a / b); printf("%d\n", a % b); return 0; }

6. [18108] 1998년생인 내가 태국에서는 2541년생?!

#include <stdio.h> int main(void) { int y; scanf("%d", &y); printf("%d", y - 2541 + 1998); return 0; }

7. [10430] 나머지

#include <stdio.h> int main(void) { int a, b, c; scanf("%d%d%d", &a, &b, &c); printf("%d\n", (a + b) % c); printf("%d\n", (a % c + b % c) % c); printf("%d\n", (a * b) % c); printf("%d", (a % c * b % c) % c); return 0; }

계산 순서에 유의해주세요.

8. [2588] 곱셈

#include <stdio.h> int main() { int a, b; scanf("%d", &a); scanf("%d", &b); int hundred = b / 100; int ten = (b % 100) / 10; int one = b % 10; printf("%d\n", one * a); printf("%d\n", ten * a); printf("%d\n", hundred * a); printf("%d", a * b); return 0; }

두 번째 정수는 세 자리 수인데, 우리는 이 수를 백의 자리, 십의 자리, 일의 자리로 분리해야 합니다.

저는 각각 hundred, ten, one이라는 변수를 선언해서 그 안에 값들을 저장했습니다.