문제 보기 - 일차 함수 (tutorial4)

시간 제한메모리 제한제출 횟수제출한 사람 수해결한 사람 수정답률
2000 ms32 MiB150837995.18%

함수 $f(x) = ax + b$는 일차함수입니다. $f$를 호출해서 함숫값을 알아낼 수 있을 때, $a$와 $b$의 값을 구하는 프로그램을 작성하세요.

단, $f$의 정의역은 $-10^2$ 이상 $10^2$ 이하의 정수들로 구성된 집합이며, $a$와 $b$의 값은 $-10^5$ 이상 $10^5$ 이하의 정수입니다. 프로그램에서 $f(x)$를 호출할 때 $x$가 정의역의 범위를 벗어나면 런타임 에러가 발생할 수 있습니다.

해야 할 일

여러분은 $a$와 $b$의 값을 구하는 함수 solve()를 작성해야 합니다. 이 함수에는 별도의 인자가 주어지지 않습니다. solve에서 호출해야 할 함수들은 아래와 같습니다.

  • f(x): f(x)의 값을 돌려주는 함수입니다.
  • Report(a, b): solve에서 맨 마지막에 호출해야 하는 함수로, ab의 값을 알려 주는 역할을 합니다. 이 값이 실제의 답과 다르다면 틀린 답으로 처리됩니다.

서브태스크

서브태스크 1 (5점)

$f(x)$를 최대 10번 호출할 수 있습니다. 이 함수를 11번 이상 호출할 시 런타임 에러가 발생합니다.

서브태스크 2 (20점)

$f(x)$를 최대 5번 호출할 수 있습니다. 이 함수를 6번 이상 호출할 시 런타임 에러가 발생합니다.

서브태스크 3 (75점)

$f(x)$를 최대 2번 호출할 수 있습니다. 이 함수를 3번 이상 호출할 시 런타임 에러가 발생합니다.

구현 시 유의사항

채점 환경

  • 실제 채점 시 solve() 함수는 1번 실행할 때마다 최대 50번씩 호출됩니다. 따라서, 이로 인해 발생할 수 있는 초기화 문제를 잘 신경써야 합니다.
  • 프로그램의 최대 실행 시간은 1초입니다. (50번/1초) 채점 프로그램의 실행 시간이 0.2초를 넘지 않음이 보장되어 있습니다.
  • 메모리 제한은 32MB이며, 스택 메모리 역시 전체 메모리에 포함됩니다.

인터페이스

문제에 제시된 첨부파일 grader.zip에서 개발에 필요한 인터페이스가 제공됩니다. 이를 이용해서 이 문제를 좀 더 쉽게 해결할 수 있을 것입니다. 아래에 그 설명이 있습니다.

  • 작성해야 할 파일: tutorial4.c 또는 tutorial4.cpp
  • 채점 프로그램 인터페이스: grader.h
  • 견본 채점 프로그램: grader.c 또는 grader.cpp
  • 컴파일 쉘(gcc): compile_c.sh 또는 compile_cpp.sh
  • 입력 예제: example.in, example.out

이 문제에서 주어지는 견본 채점 프로그램은 표준 입출력(stdin, stdout)으로 입출력을 시행합니다. 견본 채점 프로그램은 $a$와 $b$의 값을 공백을 사이로 두고 입력하면 프로그램이 찾은 $a$와 $b$의 값과 f(x)의 호출 횟수를 출력합니다.

[참고] {{submission:446}}, {{submission:454}}번 제출을 참고해서 문제를 해결하세요.

문제 출처
첨부 파일 목록
파일명크기
grader.zip1.91 KiB