Test (Omówienie)

05.08.2010

W pierwszym wykonaniu kroku drugiego, podanego w treści algorytmu (odpowiedź na pytanie 2) Hektor odpowiada B. Zastanówmy się kiedy po raz kolejny Hektor odpowie B w drugim kroku algorytmu. Można na kartce obliczyć, że zdarzy się to w pytaniu 14.

Na podstawie tego, możemy stwierdzić że Hektor odpowiada na pytania z okresem równym 14 - 2 = 12, co w tym przypadku oznacza, że dla wszystkich >= 1 zachodzi: odpowiedź[N] = odpowiedź[N+12]. Wobec tego wystarczy wypisać wynik dla indeksu ((N-1) modulo 12)+1.

Przykładowy program dostający maksymalną liczbę punktów, może wyglądać następująco:

1
2
3
4
5
6
7
8
9
10
11
12
13
#include 
#include 
 
int main(){
        std::string s = "ABCBCDCDADAB";
        int test,n;
        scanf("%d",&test);
        while(test--){
                scanf("%d",&n);
                printf("%c\n",s[(n-1)%s.size()]);
        }
        return 0;
}

Organizatorzy:

Wrocławski Portal Informatyczny Instytut Informatyki Uniwersytet Wrocławski Wrocław

Copyright © 2008-2010 Wrocławski Portal Informatyczny

design: rafalpolito.com