만드는 중입니다

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

평균 구하기

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

요약
N개의 정수(2 이상 10 이하)가 레지스터에 주어질 때, 두 레지스터의 평균을 내는 연산을 1000번 이하로 사용해 평균을 오차 1e-9 이내로 R2000에 저장하는 순서를 출력합니다.
난이도

보통10점 중 7점

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

문제

NN개의 정수가 주어질 때, 이들의 평균을 구하는 프로그램을 작성하려고 한다.

이를 위해 무한 정밀도의 실수를 저장하는 레지스터 2 0002\,000개를 사용할 수 있다. 레지스터의 이름은 R1R_{1}, R2R_{2}, ⋯\cdots, R2 000R_{2\,000}이다.

초기에 NN개의 정수는 R1R_{1}, R2R_{2}, ⋯\cdots, RNR_{N}에 저장되어 있다. 나머지 2 000−N2\,000-N개 레지스터에는 00이 저장되어 있다. 당신이 할 수 있는 연산은 다음과 같다.

  • a b c: RcR_{c}에 (Ra+Rb)/2(R_{a}+R_{b})/2의 값을 덮어씌운다.

aa, bb, cc가 서로 달라야 할 필요는 없다. 예를 들어 a=1a=1, b=2b=2, c=1c=1이면 R1R_{1}과 R2R_{2}의 평균을 구한 뒤 그 값을 R1R_{1}에 저장한다.

이 연산을 1000번 이하로 사용하여, 처음에 R1R_{1}, R2R_{2}, ⋯\cdots, RNR_{N}에 주어진 값의 평균을 R2 000R_{2\,000}에 저장하는 프로그램을 작성하고 싶다. 그러나 위 연산만으로는 정확한 평균을 구할 수 없다는 것을 증명할 수 있다. 따라서 이 문제에서는 정확한 값 대신 절댓값 오차를 10−910^{-9} 이하로 해야 한다.

처음에 R1R_{1}, R2R_{2}, ⋯\cdots, RNR_{N}에 저장된 수는 모두 00 이상 10910^{9} 이하의 정수임이 보장된다. 이 범위의 어떤 수가 들어오더라도 평균과 차이가 10−910^{-9} 이하인 값을 구해야 한다.

입력

첫 번째 줄에 NN이 주어진다. (2≤N≤102\le N\le 10)

출력

첫 번째 줄에 프로그램이 수행할 연산의 수 MM을 출력한다. (0≤M≤1 0000\le M\le 1\,000)

다음 MM개의 줄에 프로그램의 연산을 나타내는 세 수 aa, bb, cc를 공백으로 구분하여 출력한다. (1≤a,b,c≤2 0001\le a,b,c\le 2\,000)

프로그램이 MM개의 연산을 차례대로 수행했을 때, R2 000R_{2\,000}에는 처음에 R1R_{1}, R2R_{2}, ⋯\cdots, RNR_{N}에 주어진 값의 평균과 차이가 10−910^{-9} 이하인 값이 저장되어 있어야 한다. MM이 최소일 필요는 없다.

예제2

  1. 예제 1

    입력
    2
    
    예상 출력
    2
    2 1 3
    3 3 2000
    
  2. 예제 2

    입력
    4
    
    예상 출력
    3
    1 2 5
    3 4 6
    5 6 2000