만드는 중입니다

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

이더리움과 비트코인

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

요약
최대 5번의 Exchange 호출로 비트코인 가격 B와 이더리움 가격 E를 찾습니다. 각 호출은 K달러를 정확히 쓸 수 있는 BTC와 ETH 개수를 알려주며, 불가능하면 -1을 반환합니다.
난이도

보통10점 중 6점

유형
수학, 정수론, 구현
정답자
아직 제출이 없습니다

문제

용국이는 비트코인 투자로 1억을 벌었다고 하는 세운이에게 홀려 비트코인을 사려고 한다. 세운이는 암호화폐에는 비트코인 말고도 이더리움, 리플 등이 있다며 다른 화폐에 투자하기를 권한다. 그러나 용국이는 현재 중국에 있어 거래소 사이트에 접속할 수 없다. 따라서 용국이는 세운이에게 암호화폐의 시세를 물어봐야 한다.

비트코인의 시세는 11 BTC = BB달러이고, 이더리움의 시세는 11 ETH = EE달러이다. BB와 EE는 모두 22 이상 10410^4 이하인 양의 정수이다. 재미있게도 BB와 EE는 서로소(두 수의 최대공약수가 1)이다.

세운이는 시세를 직접 알려주면 재미없다고 생각한다. 그래서 용국이가 KK달러를 말하면, 세운이는 'KK달러로 정확히 pp BTC와 qq ETH를 살 수 있다'라고 답한다(단, pp, qq는 0 이상의 정수). 다만 KK가 너무 작으면 정확히 KK달러로 비트코인과 이더리움을 환전할 수 없을 수도 있다.

용국이는 세운이에게 몇 번 질문해서 비트코인과 이더리움의 시세를 알아내려고 한다. 용국이를 도와 암호화폐의 시세를 구하는 프로그램을 작성하여라.

입력

비트코인과 이더리움의 시세를 구하는 함수 GetExchangePrice()를 작성해야 한다. (GetExchangePrice() 함수는 ethereum.c 또는 ethereum.cpp에 있다.)

ethereum.h에는 구조체 excinfo가 있으며, excinfo에는 다음 인자가 있다.

  • long long BTC: 비트코인 관련 정보
  • long long ETH: 이더리움 관련 정보

excinfo GetExchangePrice() 함수는 인수를 받지 않는다. 이 함수는 다음 값을 반환해야 한다.

  • 반환값의 BTC: 11 BTC의 가격(달러 단위)
  • 반환값의 ETH: 11 ETH의 가격(달러 단위)

GetExchangePrice() 안에서 Exchange(K)를 몇 번이고 호출할 수 있다. 다만 Exchange(K)는 최대 5번까지 호출할 수 있다.

excinfo Exchange(long long K)는 KK달러로 비트코인과 이더리움을 환전하는 함수이다.

  • KK: 환전할 돈의 가격(1≤K≤1081 \le K \le 10^8)
  • 반환값의 BTC: KK달러를 환산했을 때의 비트코인 수
  • 반환값의 ETH: KK달러를 환산했을 때의 이더리움 수
  • KK달러를 환산할 수 없으면 반환값의 BTC와 ETH는 모두 −1-1이다.

GetExchangePrice()의 반환값은 실제 정답과 일치해야 한다. 일치하지 않으면 채점 프로그램이 Wrong[1]을 출력한다. 함수를 호출할 때 인자가 범위를 벗어나면 Wrong[2]를 출력하고 프로그램이 즉시 끝난다. Exchange(K)를 정해진 횟수를 넘어 호출하면 Wrong[3]을 출력하고 프로그램이 즉시 끝난다.

채점 프로그램은 처음에 정답을 정하며, 호출 내용에 따라 정답을 바꾸지 않는다(비적응형). 메모리 접근, 시스템 호출 등 비정상적인 방법을 쓰면 오답 처리될 수 있다.

힌트

문제 페이지에서 샘플 코드를 내려받을 수 있다. Visual Studio, Eclipse, Code::Blocks 같은 IDE를 쓴다면 ethereum.cpp, ethereum.h, grader.cpp(또는 ethereum.c, ethereum.h, grader.c)를 한 프로젝트에 넣어 컴파일하면 된다. 터미널에서 컴파일하려면 아래 명령어를 쓰면 된다.

  • C / gcc: gcc -Wall -lm -static -o ethereum -O2 ethereum.c grader.c
  • C++ / G++: g++ -Wall -lm -static -o ethereum -O2 ethereum.cpp grader.cpp

프로그램을 실행하면 표준입력으로 비트코인 시세 BB와 이더리움 시세 EE를 입력받는다. 모든 정보를 입력받으면 샘플 채점기가 정답 여부를 출력한다.

제출할 때는 ethereum.c 또는 ethereum.cpp 코드만 내면 된다.

예제1

  1. 예제 1

    입력
    2904 229
    
    예상 출력
    Correct