https://www.acmicpc.net/problem/31577

 

1부터 20까지의 수가 15개의 컴퓨터 중에서 최소 6개의 컴퓨터에 들어가 있는 경우를 찾아내야 하는 문제다.

당연히 5개의 컴퓨터까지 랜섬웨어에 걸릴 수 있으므로 최소 6개가 들어가야 한다.

또한 한 컴퓨터에는 최대 8개의 파일만 들어갈 수 있다.

 

의도된 문제겠지만

15 × 8 = 20 × 6 으로 개수도 딱 맞아 떨어진다.

120까지 돌면서 i%20+1을 배열에 저장해두고 8개씩 끊으면 끝이다.

 

코드는 다음과 같다.

#include <iostream>
#include <algorithm>
#include <vector>
#define endl "\n"
using namespace std;

int main() {
    vector<int> bit;
    int arr[8];
    for(int i = 0; i < 120; i++){
        arr[i%8] = i%20+1;
        if((i+1)%8 == 0){
            sort(arr,arr+8);
            for(int j = 0; j < 8; j++){
                cout << arr[j] << " ";
            }
            cout << endl;
        }
    }
}

 

 

ps 워렌버핏은 코인 회의론자이다.

루오