Dati di input
Dati di output
Esempi di input/output
ABAA NO
ABBA
ABBA SI
BABA
Autore/i
A.S. Stankevich, ACM ICPC Team, St. Petersburg State University of Information
Technology, Mechanics and Optics
Antipalindroma (anpal)
Descrizione del problema
Una stringa di caratteri si dice palindroma se risulta identica sia che venga
letta da sinistra a destra sia che venga letta da destra a sinistra. Per
esempio, acca è una stringa palindroma.
Dati di input
Dati di output
Esempi di input/output
abba abb
Autore/i
A.S. Stankevich, ACM ICPC Team, St. Petersburg State University of Information
Technology, Mechanics and Optics
Il postulato di Bertrand (bertrand)
Descrizione del problema
Dati di input
Dati di output
Esempi di input/output
2 1
239 39
Autore/i
Due Scatole (duescatole)
Descrizione del problema
Si vuole determinare se una delle due scatole può essere contenuta nell'altra,
sapendo che le due scatole possono ruotare (di 90° alla volta) attorno a
ciascuno dei propri lati, per cui le facce delle due scatole sono sempre parallele
oppure ortogonali.
Tali scatole hanno spessore nullo e, quindi, una può essere contenuta nell'altra
anche a parità di lunghezza di alcuni dei lati (mentre nella realtà ciò non è
possibile).
Dati di input
Il file input.txt è composto da due righe. La prima riga contiene i tre numeri
interi A1, B1 eC1 separati da uno spazio. La seconda riga contiene i tre numeri
interi A2, B2 e C2 separati da uno spazio. Tutti i numeri sono positivi e non
superiori a 1000.
Dati di output
1 2 3 Scatole uguali
3 2 1
3 2 1
3 2 3
2 4 6
Riconoscimento del linguaggio (linguaggio)
Descrizione del problema
Nella teoria dei linguaggi formali e degli automi, uno dei concetti di base è
appunto quello di linguaggio formale, che può essere definito come un
insieme di parole, dove ogni parola è una sequenza finita di simboli.
Dati di input
Dati di output
Esempi di input/output
3 SI
001122 NO
0001112222 SI
000111222
2 NO
0000111122220 SI
012
Autore/i
A.S. Stankevich, ACM ICPC Team, St. Petersburg State University of Information
Technology, Mechanics and Optics
Patterns (patterns)
Descrizione del problema
Un pattern di dimensione n è una stringa di lunghezza n i cui caratteri sono elementi del seguente
insieme {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, g, ?}.
Sono assegnati due pattern p1 e p2 e siano S1 e S2 gli insiemi di stringhe che possono essere
ottenuti, rispettivamente da p1 e p2, usando le regole di trasformazione sopra definite. Si deve
trovare il numero di stringhe che appartengono alla intersezione di S1 e S2.
Dati di input
La prima riga del file di input contiene il pattern p1 e la seconda riga contiene p2. I due pattern
hanno la medesima dimensione n, 0 < n < 10.
Dati di output
Esempi di input/output
??? 64
abc
?a? 1
000
Potenza esatta (potesatta)
Descrizione del problema
Un intero positivo x è una potenza esatta se esistono due interi a e b (b>1) tali che x=ab. Si fa notare
che qualche volta questi numeri a e b non possono essere determinati in modo univoco. Per
esempio, per x = 16, si hanno due possibilità (a=2 e b=4 oppure a=4 e b=2), infatti 16 = 42 = 24.
Dato un intero x, il problema consiste nel trovare il numero delle coppie (ai,bi) per cui
risulta x= ai bi.
Dati di input
Dati di output
Il file di output contiene una sola riga, contenente il numero k di coppie (a,b) per cui x=ab.
Esempi di input/output
3 0
16 2
Punti Fissi (puntifissi)
Descrizione del problema
Dati di input
Dati di output
Esempi di input/output
5 2 20
9 6 168
File input.txt File output.txt
2 1 0
9 0 133496
Quadrato (quadrato)
Descrizione del problema
Dati quattro punti nel piano cartesiano, si vuole determinare se essi formano i
vertici di un quadrato, comunque disposto nel piano cartesiano. Si noti che non
necessariamente i lati del quadrato devono essere paralleli od ortogonali
rispetto agli assi; inoltre, in alcuni casi, alcuni punti potrebbero essere
coincidenti.
Scrivere un programma che riceve le coordinate dei quattro punti nel piano
cartesiano e determina se questi formano un quadrato. [Suggerimento: dati
tre punti P, Q e R, per verificare se l'angolo PQR è retto, sia V1 = (x1, y1) il
vettore che collega P a Q e V2 = (x2,y2) il vettore che collega R a Q (basta
prendere la differenza tra coordinate omologhe delle coppie di punti).
Affinché PQR sia retto, tali vettori devono essere perpendicolari, ossia il loro
prodotto scalare deve essere nullo: x1 x x2+ y1 x y2 = 0.]
Dati di input
Dati di output
Esempi di input/output
0 0 SI
1 1
0 1
1 0
0 0
1 1
0 1
Quadrato di parole (quadratopar)
Descrizione del problema
Alcuni insiemi di parole hanno proprietà interessanti; in particolare, le parole possono essere scritte
nelle celle di un quadratonxn in modo tale che tutte le parole possono essere lette sia
orizzontalmente sia verticalmente. Allo stesso tempo, la parola sulla prima riga deve essere presente
sulla prima riga, quella della seconda riga essere anche sulla seconda colonna e così via per ogni
parola presente sulla riga i deve essere presente sulla colonna i. Un esempio di un tale insieme è
dato da S = {"DATE", "FIND", IDEA", NEXT"}. Questo insieme può essere inserito nella seguente
griglia quadrata
F I N D
I D E A
N E X T
D A T E
Queste griglie sono dette quadrati di parole. I quadrati più grandi conosciuti hanno dimensione 10.
Data una griglia 4 x 4, con una lettera maiuscola dell'alfabeto latino in ciascuna cella, determinare
se questa griglia rappresenta un quadrato di parole.
Dati di input
Il file di input contiene quattro righe. Ciascuna riga contiene quattro lettere maiuscole separate da
uno spazio.
Dati di output
Esempi di input/output
N R Y E SOMETHING OTHER
T U H O
F L R E
E C K F
Z H O R WORD SQUARE
H H K C
O K Y L
R C L X
Autore/i
Simmetria (simmetria)
Descrizione del problema
Scrivere un programma che, presa una retta R parallela a uno degli assi
cartesiani e un punto A nel piano cartesiano, calcola le coordinate del
punto B simmetrico ad A rispetto a R.
Dati di input
Dati di output
Esempi di input/output
0 0 0 1 -10 10
10 10
0 0 1 0 10 -10
10 10
Stringhe (stringhe)
Descrizione del problema
Data una stringa s1s2...sn di lunghezza n, la stringa sksk+1sk+2 ...sns1s2...sk-1 è uno cyclic shift della
stringa s. La stringa sisi+1...sj-1sj , con 0 < i <= j <= n, si dice sottostringa di s.
Assegnate due stringhe a e b, scrivere un programma per trovare il numero di sottostringhe di a che
sono cyclic shift della stringa b.
Dati di input
La prima riga del file di input contiene la stringa a (0 < |a| < 1001). La seconda riga contiene la
stringa b (0 < |b| =< min(100, |a|)). I caratteri di queste stringhe possono essere lettere dell'alfabeto
latino e/o cifre decimali.
Dati di output
Esempi di input/output
abcabc 4
abc
abcabc 0
acb
Una grande tavola pitagorica (tavola)
Descrizione del problema
Gianni ama la matematica. Qualche tempo fa, ha deciso che la "vecchia" tavola
pitagorica di dimensione 10×10 era troppo restrittiva.
Per esempio, con n=3 e m=4, abbiamo che la tabella contiene, in ordine di
riga: 1, 2, 3, 4, 2, 4 , 6, 8, 3, 6, 9, 12. Quindi, le cifre 1, 3, 4 e 6 compaiono
due volte ciascuna, la cifra 2 tre volte, le cifre 8 e 9 una volta ciascuna e tutte
le altre cifre compaiono zero volte. Gianni quindi scrive tali frequenze in ordine
crescente di cifra: 0, 2, 3, 2, 2, 0, 2, 0, 1, 1.
Dati di input
Dati di output
Esempi di input/output
24
27
15
23
15
17
15
6
Tavole graziose (tavgraziose)
Descrizione del problema
Consideriamo un reticolo rettangolare con n righe e m colonne; in ciascuna cella è presente una
delle due cifre 0 oppure 1.
Supponiamo di definire grazioso il reticolo se in esso non è contenuto nessun quadrato 2x2 riempito
completamente o dalla cifra 0 o dalla cifra 1.
1 0 1 0
1 1 1 0
0 1 0 1
0 0 0 0
0 0 1
0 0 1
1 1 1
Sono assegnati diversi reticoli e voi dovete scrivere un programma che verifichi per ciascuno di essi
se è un reticolo grazioso oppure no.
Dati di input
La prima linea contiene il numero intero t (0 <t< 11) dei reticoli da esaminare. Seguono le
descrizioni dei singoli reticoli. Per ciascun reticolo, la prima linea contiene due interi n e m (0 < n,
m < 101); ciascuna delle successive n linee contiene (per i = 1,n) gli m numeri (per j = 1, m) separati
da uno spazio, che sono gli elementi ai.j del reticolo in esame.
Dati di output
Per ognuno dei t casi da esaminare, stampare YES se il relativo reticolo è grazioso; altrimenti
stampare NO.
Esempi di input/output
3 YES
1 1 YES
0 NO
4 4
1 0 1 0
1 1 1 0
0 1 0 1
0 0 0 0
3 3
0 0 1
0 0 1
1 1 1
Problema di assegnamento (assegnamento)
Descrizione del problema
Dati di input
La prima riga del file di input contiene un numero intero n non negativo (1<= n <= 10).
Ciascuna delle n righe successive contiene n numeri: il j-esimo numero della riga i+1 contiene il
costo cij (0 <= cij <= 109).
Dati di output
Deve contenere il risultato richiesto dal problema, cioè il minimo costo totale dell'assegnamento di
tutti gli n agenti agli n compiti.
Esempi di input/output
2 2
1 2
2 1
2 5
1 2
3 4
Conteggio di punti e rettangoli ( conta )
Descrizione del problema
Dati di input
Dati di output
Esempi di input/output
3 3 1 1 0
4 3 1 1 2
Conteggio dei divisori (contdivisori)
Descrizione del problema
Sia x un numero intero. Diremo che y è un divisore di x se 1 <= y <= x e il resto della divisione
di x per y è uguale a zero.
Dati di input
Il file di input contiene un intero x (1 <= x <= 1018). Tutti i divisori primi di x non superano 1000.
Dati di output
Esempi di input/output
12 6
239 2
Divisione e resto (divresto)
Descrizione del problema
Vengono dati due interi non negativi n e k. Si chiede di trovare il valore di n modulo k (cioè il resto
della divisione di n per k).
Dati di input
Il file di input contiene due numeri interi: n e k (1 <= n <= 10100, 1 <= k <= 109).
Dati di output
Esempi di input/output
239 16 15
Autore/i
Fattorizzazione ( fattori )
Descrizione del problema
Dati di input
Dati di output
Esempi di input/output
6 7
10 7
Qualità di una stringa ( diff )
Descrizione del problema
Scrivere un programma che, data una stringa, calcola la sottostringa che, fra
tutte quelle di qualità massima (cioè pari alla qualità della stringa data), abbia
lunghezza minima.
Dati di input
L'unica riga del file di input contiene la stringa s, costituita da lettere minuscole
dell'alfabeto inglese. La lunghezza di s è maggiore di zero e non superiore a
2*105.
Dati di output
Esempi di input/output
aba ab
zzz z
Rettangoli ( rettangoli )
Descrizione del problema
Si chiede di trovare il numero di rettangoli non degeneri, con i lati paralleli agli
assi cartesiani e con le coordinate dei vertici date da numeri interi, che si
trovano all'interno o sui bordi del rettangolo dato.
Dati di input
L'unica riga del file di input contiene i due numeri interi W e H (con 1
<= W,H <= 103).
Dati di output
Esempi di input/output
1 1 1
2 1 3
elezione del k-esimo minimo (selezione)
Descrizione del problema
Sono dati n numeri interi distinti a1, a2, ..., an (non necessariamente ordinati).
Il k-esimo minimo è il numero aj tale che ci sono K-1 numeri più piccoli di lui
tra i rimanenti interi. Trovare il k-esimo minimo in a1, a2, ..., an.
Dati di input
Dati di output
Esempi di input/output
5 2 172370486
447891263 151798456 700562442 865711803 172370486
1 1 395905565
395905565
Sequenza (sequenza)
Descrizione del problema
Definiamo una sequenza di numeri interi a1 = 1 , an = an-1 + 3 se il numero n compare nella stessa
sequenza (cioè se esiste un jtale che aj = n) altrimenti an = an-1 + 2.
Dati di input
Dati di output
Esempi di input/output
1 1
8 18
Due triangoli ( simili )
Descrizione del problema
Sono dati due triangoli ABC e DEF. Scrivere un programma che determini se i
due triangoli sono simili.
Dati di input
La prima riga del file di input contiene le coordinate dei vertici del
triangolo ABC: xA, yA, xB,yB, xC, yC.
La seconda riga del file di input contiene le coordinate dei vertici del
triangolo DEF.
Tutti i valori nel file di input non superano in valore assoluto 5000. Inoltre le
aree di ABC eDEF sono positive.
Dati di output
Il file di output deve contenere l'indicazione "YES" se i due triangoli sono simili,
"NO" in caso contrario.
Esempi di input/output
0 0 1 0 0 1 YES
10 10 12 10 10 12
0 0 1 0 0 1 NO
0 0 10 0 0 5
Sistema di diseguaglianze ( sistema )
Descrizione del problema
Dati di input
Dati di output
Esempi di input/output
6 8
x > 2
x < 5
y > 2
y < 5
z > 2
z < 5
1 510050
x > y
Somma di un segmento ( somma )
Descrizione del problema
Data una sequenza di n numeri interi a1, a2, ..., an, si definisce somma di un
segmento [l,r] (con 1 <= l <= r <= n) il risultato della sommatoria al + ...
+ ar.
Dati di input
La prima riga del file di input contiene il numero intero n (1 <= n <= 1000). La
seconda riga del file di input contiene n numeri interi ai separati da spazi. Tutti
i numeri ai non superano in valore assoluto il numero 109. La terza riga del file
contiene il numero intero x (<= 109).
Dati di output
Il file di output contiene i due numeri interi l e r (con l <= r) che definiscono il
segmento. Se non esiste alcun segmento che soddisfa i requisiti, il file di
output contiene i due valori -1 -1.
Esempi di input/output
4 3 4
1 4 2 3
5
4 -1 -1
1 2 3 4
-5
Descrizione del problema
Dati di input
Il file di input contiene due interi: n (0 <= n <= 105) ed m (2 <= m <= 104).
Dati di output
Esempi di input/output
3 1000 256
10 10 6
Teoria dei giochi (teoriagiochi)
Descrizione del problema
Nella teoria dei giochi uno dei concetti più interessanti è il gioco a somma zero per due giocatori.
Questi giochi sono caratterizzati da un insieme X di strategie per il primo giocatore e da un insieme
Y di strategie per il secondo giocatore. Viene poi stabilita la funzione delle vincite K(x,y}
con xX e yY. Se X e Y sono insiemi finiti si parla di gioco matriciale perché la funzione
delle vincite può essere rappresentata da una matrice.
Così Kij è la vincita del primo giocatore quando sceglie la strategia i assumendo che il secondo
giocatore scelga la strategia j. Se questo valore è positivo si tratta effettivamente di una vincita. Se
invece è negativo si tratta di una perdita (e quindi di una vincita per il secondo giocatore).
Il valore di maximin di questo gioco è maxi=1...n minj=1...m Kij. Il valore di minimax di questo gioco è
invece minj=1...mmaxi=1...n Kij.
Data una matrice delle vincite di un gioco matriciale si chiede di calcolare i suoi valori di maximin
e di minimax.
Dati di input
La prima riga del file di input contiene due numeri interi n ed m (1 <= n, m <= 100). Ciascuna
delle n righe successive contienem numeri interi. Il j-esimo numero della i-esima di queste righe
contiene Kij. Tutti i Kij non superano 100 in valore assoluto.
Dati di output
Esempi di input/output
3 3 -2 2
4 -1 -3
-2 1 3
0 2 -3
3 4
-1 0 2 1
-2 0 1 0
2 1 -1 -2
Triangolo (triangolo)
Descrizione del problema
Si consideri un triangolo ABC nel piano cartesiano. I vertici ABC abbiano rispettivamente
coordinate (xA, yA), (xB, yB), (xC,yC). Il centro di massa di questo triangolo è il punto di coordinate
((xA+xB+xC)/3, (yA+yB+yC)/3).
Date le coordinate del centro di massa di ABC si chiede di trovare i suoi vertici che soddisfano alle
seguenti condizioni:
Dati di input
Il file di input contiene solo due interi: le coordinate x e y (-109 <= x , y <= 109) del centro di
massa del triangolo.
Dati di output
Se esiste un triangolo che soddisfa a tutti i vincoli dare in uscita sulla prima riga la stringa YES,
altrimenti rispondere NO. Se la risposta è YES scrivere in uscita, rispettivamente sulla seconda,
terza e quarta riga le coordinate dei vertici trovati. Se ci sono più triangoli che soddisfano ai vincoli
imposti dal problema dare in uscita le coordinate dei vertici di ciascuno di essi.
Esempi di input/output
9 4 YES
3 9
6 3
18 0