Mistrz Programowania

Mistrz Programowania 2025 runda 0 poziom c
Tagi: interaktywne matematyka
Autor zadania: Tomasz Kwiatkowski
Treść

Omówienie zadania Gra

Przypomnijmy cechę podzielności przez $9$ – liczba jest podzielna przez $9$ wtedy i tylko wtedy, gdy suma jej cyfr jest podzielna przez $9$. Zatem, równoważnie, naszym celem jest sprawić, aby końcowa liczba miała sumę cyfr podzielną przez $9$.

Drugi gracz zawsze ma strategię wygrywającą, ponieważ wypisuje ostatnią cyfrę. Może dowolnie wybrać ostanią cyfrę – a zatem również resztę z dzielenia sumy cyfr przez $9$. Przykładowo, jeżeli do tej pory suma cyfr była równa $3$ – wystarczy wpisać $6$.

W rozwiązaniu wypiszemy $n-1$ dowolnych cyfr, zapamiętamy ich sumę oraz sumę cyfr wypisanych przez przeciwnika. Na koniec wystarczy wypisać cyfrę 9 - suma % 9 (warto też zauważyć, że wynik tego odejmowania będzie jednocyfrowy).

Przykładowe implementacje

C++

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    
    int sum;
    cin >> sum;
    for (int i = 0; i < n - 1; ++i) {
        cout << 0 << endl;
        int opponent;
        cin >> opponent;
        sum += opponent;
    }
    cout << 9 - sum % 9 << endl;
    return 0;
}

Python

def main():
    n = int(input())

    sum = int(input())
    for i in range(n - 1):
        print(0, flush=True)
        opponent = int(input())
        sum += opponent
    print(9 - sum % 9, flush=True)


main()

Uwagi