만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

계산 - 과제 6

시간 제한1초메모리 제한1024 MB

요약
제한된 명령어만으로 10개의 과제를 계산하는 프로그램을 작성합니다. 과제에는 XOR, 곱의 나머지, 실수 16개 정렬이 포함됩니다.
난이도

보통10점 중 6점

유형
구현, 비트 연산, 정렬
정답자
아직 제출이 없습니다

문제

아래 명령어만 사용하여 문제를 해결하는 프로그램을 작성한다. xtx_t를 tt번째 명령의 결과라고 하자. 사용할 수 있는 명령, 문법, 결과 xtx_t는 다음과 같다.

이름연산자인자효과
입력I없음터미널에서 실수 하나를 읽어 xtx_t로 둔다
출력Oiixix_i를 터미널에 출력하고, xt=xix_t = x_i로 둔다
덧셈+iji \quad jxt=xi+xjx_t = x_i + x_j
상수 더하기Cici \quad cxt=xi+cx_t = x_i + c
부호 반전-iixt=−xix_t = -x_i
왼쪽 시프트<iki \quad kxt=xi⋅2kx_t = x_i \cdot 2^k
오른쪽 시프트>iki \quad kxt=xi⋅2−kx_t = x_i \cdot 2^{-k}
SSiixt=s(xi)x_t = s(x_i)
비교Piji \quad jxi<xjx_i < x_j이면 −1-1, xi=xjx_i = x_j이면 00, xi>xjx_i > x_j이면 11
최댓값Miji \quad jxi>xjx_i > x_j이면 xt=xix_t = x_i, 그렇지 않으면 xt=xjx_t = x_j
곱셈*iji \quad jxi=xi⋅xjx_i = x_i \cdot x_j

s(x)s(x)의 정의는 아래와 같다. 여기서 e=2.718281828459045…e = 2.718281828459045\ldots는 자연로그의 밑이다.

s(x)=11+e−x.s(x) = \frac{1}{1 + e^{-x}}.

P, M, * 연산자를 사용하면 감점이 있다. 자세한 내용은 아래 '채점' 부분을 참고한다.

명령은 순서대로 하나씩 실행된다. 각 명령에서 인자 ii와 jj는 현재 명령 번호 tt보다 작아야 한다. 연산은 유한한 정밀도를 가진다. 결과는 소수점 아래 90자리까지만 정확하며, 그 이하는 반올림된다. 상수 더하기 명령의 인자 cc는 소수 부분이 최대 90자리까지 가능하다. 왼쪽 시프트와 오른쪽 시프트에서 kk는 10000 이하의 0 이상 정수여야 한다.

과제

  • 과제 1: a,ba, b가 주어진다. ∣a∣,∣b∣≤109|a|, |b| \leq 10^9이고, a,ba, b의 소수 부분은 최대 9자리이다. −2a−2b-2a-2b를 계산한다.
  • 과제 2: aa가 주어진다. ∣a∣≤109|a| \leq 10^9이고, aa의 소수 부분은 최대 9자리이다. 11+e17a\frac{1}{1+e^{17a}}를 계산한다.
  • 과제 3: aa가 주어진다. ∣a∣≤109|a| \leq 10^9이고, aa의 소수 부분은 최대 9자리이다. a<0a < 0이면 −1-1, a=0a = 0이면 00, a>0a > 0이면 11을 계산한다.
  • 과제 4: aa가 주어진다. ∣a∣≤109|a| \leq 10^9이고, aa의 소수 부분은 최대 9자리이다. 절댓값 ∣a∣|a|를 계산한다.
  • 과제 5: a1,…,a32a_1, \ldots, a_{32}가 주어지며 각 ai∈{0,1}a_i \in \{0,1\}이다. a1a2⋯a32a_1a_2 \cdots a_{32}를 a1a_1이 최상위 비트, a32a_{32}가 최하위 비트인 2진수로 보고, 그 값을 10진수로 계산한다.
  • 과제 6: 정수 aa가 0≤a<2320 \leq a < 2^{32}로 주어진다. aa를 2진수로 나타낸 정수 32개를 출력한다. 가장 높은 비트부터 먼저 출력하고, 가장 낮은 비트를 마지막에 출력한다. 2진수 표현이 32자리보다 짧으면 앞에 0을 채운다.
  • 과제 7: 정수 a,ba, b가 0≤a,b<2320 \leq a, b < 2^{32}로 주어진다. aa와 bb의 비트 단위 XOR을 계산한다.
  • 과제 8: aa가 주어진다. ∣a∣≤109|a| \leq 10^9이고, aa의 소수 부분은 최대 9자리이다. a10\frac{a}{10}을 출력한다.
  • 과제 9: a1,…,a16a_1, \ldots, a_{16}이 주어진다. ∣ai∣≤109|a_i| \leq 10^9이고, 각 aia_i의 소수 부분은 최대 9자리이다. a1,…,a16a_1, \ldots, a_{16}을 오름차순으로 정렬한 실수 16개를 출력한다.
  • 과제 10: 정수 a,b,ma, b, m이 주어진다. 0≤a,b<2320 \leq a, b < 2^{32}이고 1≤m<2321 \leq m < 2^{32}이다. a×ba \times b를 mm으로 나눈 나머지, 즉 a×b mod ma \times b \bmod m을 계산한다.

출력

ii번째 줄은 ii번째 명령을 설명한다. 먼저 연산을 나타내는 문자 하나를 출력한다. 그다음 인자를 나타내는 정수를 0개 이상 출력한다. 연산자와 인자 사이, 그리고 인자들 사이는 공백 하나로 구분한다.

최대 10410^4줄까지 출력할 수 있다.

예제1

  1. 예제 1

    입력
    예상 출력
    I
    + 1 1
    - 2
    I
    + 4 4
    - 5
    + 3 6
    - 7
    - 8
    O 9