평균 구하기

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

요약
주어진 정수들의 평균을 1e-9 이내의 오차로 구하도록, 1000번 이하의 평균 연산을 구성하는 문제입니다.
난이도

보통10점 중 7점

유형
수학, 그리디, 구현, 완전 탐색
정답자
아직 제출이 없습니다

문제

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

이를 위해 무한 정밀도의 실수를 저장하는 레지스터 2,0002\\,000개를 사용할 수 있다. 이 레지스터는 R_1R\_{1}, R_2R\_{2}, ..., R_2,000R\_{2\\,000}으로 이름이 매겨져 있다.

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

  • aa bb cc: R_cR\_{c}에 (R_a+R_b)/2(R\_{a}+R\_{b}) /2의 값을 덮어씌운다.

aa, bb, cc가 다를 필요는 없다. 예를 들어, a=1a=1, b=2b=2, c=1c=1는 R_1R\_{1}과 R_2R\_{2}의 평균을 구한 뒤 그 값을 R_1R\_{1}에 저장하는 연산이다.

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

처음에 R_1R\_{1}, R_2R\_{2}, ⋯\cdots, R_NR\_{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개의 줄에 프로그램의 연산을 나타내는 33개의 수 aa, bb, cc를 공백을 사이에 두고 출력한다. (1≤a,b,c≤2,0001\le a,b,c\le 2\\,000)

프로그램이 MM개의 연산을 차례대로 수행했을 때, R_2,000R\_{2\\,000}에는 처음에 R_1R\_{1}, R_2R\_{2}, ⋯\cdots, R_NR\_{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