esercizi facili ioi

37
Anagramma (anagr) Descrizione del problema Una stringa di caratteri S 1 si dice anagramma di un'altra stringa S 2 se la prima può essere ottenuta dalla seconda permutandone i caratteri. Per esempio, MORA è un anagramma diROMA mentre MARA non lo è (in quanto i caratteri sono diversi). Scrivere un programma che riceve due stringhe S 1 e S 2 e determina se S 1 è un anagramma diS 2 . Dati di input Il file input.txt è composto da due righe. La prima riga contiene la stringa S 1 e la seconda contiene la stringa S 2 . Entrambe le stringhe sono sequenze non vuote, costituite da lettere dell'alfabeto anglosassone codificate in codice ASCII, e la loro lunghezza massima è di 100 caratteri. Dati di output Il file output.txt contiene una sola riga: la parola SI se S 1 è un anagramma di S 2 , oppure la parola NO in caso contrario. Esempi di input/output File input.txt File output.txt ABAA ABBA NO File input.txt File output.txt ABBA BABA SI Autore/i A.S. Stankevich, ACM ICPC Team, St. Petersburg State University of Information Technology, Mechanics and Optics

Upload: matteo-zorzi

Post on 29-Jun-2015

160 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Esercizi Facili IOI

Anagramma (anagr)

Descrizione del problema

Una stringa di caratteri S1 si dice anagramma di un'altra stringa S2 se la prima può essere ottenuta dalla seconda permutandone i caratteri. Per

esempio, MORA è un anagramma diROMA mentre MARA non lo è (in quanto i

caratteri sono diversi).

Scrivere un programma che riceve due stringhe S1 e S2 e determina se S1 è un anagramma diS2.

Dati di input

Il file input.txt è composto da due righe. La prima riga contiene la

stringa S1 e la seconda contiene la stringa S2. Entrambe le stringhe sono

sequenze non vuote, costituite da lettere dell'alfabeto anglosassone codificate in codice ASCII, e la loro lunghezza massima è di 100 caratteri.

Dati di output

Il file output.txt contiene una sola riga: la parola SI se S1 è un anagramma

di S2, oppure la parola NO in caso contrario.

Esempi di input/output

File input.txt File output.txt

ABAA

ABBA

NO

File input.txt File output.txt

ABBA

BABA

SI

Autore/i

A.S. Stankevich, ACM ICPC Team, St. Petersburg State University of Information

Technology, Mechanics and Optics

Page 2: Esercizi Facili IOI

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.

Una sottostringa è una sequenza di caratteri consecutivi scelti dalla stringa

data. Per esempio, ac è una sottostringa di acca mentre aca non lo è perché

un carattere viene saltato in essa.

Scrivere un programma che riceve una stringa S palindroma in ingresso, e restituisce la sottostringa di S di massima lunghezza che non sia palindroma.

In caso di più sottostringhe di pari lunghezza massima che soddisfano i requisiti sopra, il programma deve restituire quella che appare più a sinistra.

Dati di input

Il file input.txt è composto da una sola riga contenente la stringa S fornita in

ingresso. Tale stringa è una sequenza non vuota, costituita dalle lettere dell'alfabeto codificate in ASCII, e la sua massima lunghezza è di 100 caratteri.

Dati di output

Il file output.txt è formato da una sola riga contenente la sottostringa di S di

massima lunghezza non palindroma. Se tutte le sottostringhe non vuote

di S sono palindrome, il file deve contenere l'indicazione NO SOLUZIONI.

Esempi di input/output

File input.txt File output.txt

abba abb

Autore/i

A.S. Stankevich, ACM ICPC Team, St. Petersburg State University of Information

Technology, Mechanics and Optics

Page 3: Esercizi Facili IOI

Il postulato di Bertrand (bertrand)

Descrizione del problema

Un numero intero x > 1 è detto numero primo se ha due soli divisori: 1 e x stesso. Come è noto, 2, 3, 5, 7, 11 e 13 sono numeri primi mentre 15 non

lo è, in quanto divisibile per 3.

La versione debole del postulato di Bertrand (che in realtà è il teorema

Bertrand-Chebyshev) afferma che, per ogni intero n > 1, esiste sempre almeno un numero primo p tale che n < p< 2n.

Questa relazione è stata ipotizzata per la prima volta da Bertrand, che la

verificò personalmente per tutti i numeri n nell'intervallo 2 <= n <= 3 × 106. La relazione fu poi definitivamente dimostrata da Chebyshev.

Il compito che questo problema propone è un po' più ampio: scrivere un programma che riceve un intero n > 1 e stabilisce quanti numeri primi p sono

compresi nell'intervallo n < p< 2n.

Dati di input

Il file input.txt è composto da un'unica riga contenente il numero intero n (2

<= n <= 3.000).

Dati di output

Il file output.txt è composto da una sola riga, contenente un intero che

rappresenta quanti numeri primi p sono compresi nell'intervallo n < p < 2n.

Esempi di input/output

File input.txt File output.txt

2 1

File input.txt File output.txt

239 39

Autore/i

Page 4: Esercizi Facili IOI

Due Scatole (duescatole)

Descrizione del problema

Sul tavolo ci sono due scatole vuote: la prima ha dimensioni A1 × B1 × C1 e la seconda A2 ×B2 × C2, espresse come base × altezza × profondità in una

qualche unità di misura.

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).

Per esempio, la scatola di dimensioni 3 × 9 × 7 è contenuta nella scatola 7 ×

5 × 10 facendo combaciare i due lati lunghi 7 e allineando il lato lungo 3 con quello lungo 5 (e quindi quello lungo 9 con quello lungo 10). Non è invece

contenuta nella scatola 5 × 5 × 10 perché il lato lungo 9 deve necessariamente essere allineato con quello lungo 10 e, quindi, il lato lungo 7 non può essere

allineato con uno dei due lati rimanenti, ciascuno di lunghezza pari a 5.

Scrivere un programma che riceve le dimensioni A1 × B1 × C1 e A2 × B2 × C2 e

determina se una delle due scatole può essere contenuta nell'altra.

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

Il file output.txt è formato da una sola riga determinata come segue:

se le due scatole sono uguali, il file deve contenere la scritta Scatole

uguali; se la prima scatola può essere contenuta nella seconda, il file deve

contenere la scrittaPrima scatola piu' piccola della seconda; se la seconda scatola può essere contenuta nella prima, il file deve

contenere la scrittaPrima scatola piu' grande della seconda; in tutti gli altri casi, il file deve contenere la scritta Scatole non

confrontabili.

Page 5: Esercizi Facili IOI

Esempi di input/output

File input.txt File output.txt

1 2 3

3 2 1

Scatole uguali

File input.txt File output.txt

2 2 3

3 2 1

Prima scatola piu' grande della seconda

File input.txt File output.txt

2 2 3

3 2 3

Prima scatola piu' piccola della seconda

File input.txt File output.txt

3 4 5

2 4 6

Scatole non confrontabili

Page 6: Esercizi Facili IOI

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.

Il problema proposto consiste nel determinare se una certa parola appartiene o

meno al linguaggio {0n 1n 2n, n >= 1}, dove i simboli sono 0, 1 e 2. Questo

linguaggio è costituito dalle parole nelle quali il numero di 0 è uguale al

numero di 1 e al numero di due. Inoltre, tutti gli 0 di ciascuna parola devono

precedere tutti gli 1 della parola, e questi a loro volta devono precedere tutti

i 2.

Ad esempio, la parola 001122 appartiene al linguaggio perché ci sono due 0,

seguiti da due1 e da due 2 (n=2). La parola 000111122220 non vi appartiene in

quanto pur essendoci n=4 occorrenze di ciascun simbolo, uno 0 appare dopo

gli 1 e i 2. In modo analogo, la parola00011112222 non vi appartiene perché il

numero di 0 è differente da quello degli altri simboli.

Scrivere un programma che riceve un dato elenco di p parole e stabilisce, per ciascuna di esse, se appartiene al suddetto linguaggio.

Dati di input

Il file input.txt è composto da p+1 righe.

La prima riga contiene un intero positivo che rappresenta p (p <= 10), il numero di parole da analizzare.

Ciascuna delle successive p righe contiene una delle parole da analizzare. Le

parole non sono vuote, e la loro massima lunghezza è di 300 caratteri.

Dati di output

Il file output.txt è composto da p righe. Nella i-esima riga, deve essere

riportata l'indicazione SI se la i-esima parola in input appartiene al

linguaggio {0n 1n 2n, n >= 1}, oppure l'indicazione NO in caso contrario.

Esempi di input/output

File input.txt File output.txt

3

SI

Page 7: Esercizi Facili IOI

001122

0001112222

000111222

NO

SI

File input.txt File output.txt

2

0000111122220

012

NO

SI

Autore/i

A.S. Stankevich, ACM ICPC Team, St. Petersburg State University of Information

Technology, Mechanics and Optics

Page 8: Esercizi Facili IOI

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, ?}.

I pattern sono trasformati in stringhe usando le seguenti regole:

i simboli da 0 a 9 possono essere trasformati solo in se stessi; il simbolo a può essere trasformato in uno dei simboli 0, 1, 2, 3; il simbolo b può essere trasformato in uno dei simboli 1, 2, 3, 4; il simbolo c può essere trasformato in uno dei simboli 2, 3; 4, 5; il simbolo d può essere trasformato in uno dei simboli 3, 4, 5, 6; il simbolo e può essere trasformato in uno dei simboli 4, 5, 6, 7; il simbolo f può essere trasformato in uno dei simboli 5, 6, 7, 8; il simbolo g può essere trasformato in uno dei simboli 6, 7, 8, 9; il simbolo ? può essere trasformato in uno dei simboli da 0 a 9.

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

Contiene il numero che rappresenta la soluzione del problema.

Esempi di input/output

File input.txt File output.txt

???

abc

64

File input.txt File output.txt

?a?

000

1

Page 9: Esercizi Facili IOI

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 = 2

4.

Dato un intero x, il problema consiste nel trovare il numero delle coppie (ai,bi) per cui

risulta x= ai b

i.

Dati di input

Il file di input contiene un numero intero x (1 < x < 109 + 1).

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

File input.txt File output.txt

3 0

File input.txt File output.txt

16 2

Page 10: Esercizi Facili IOI

Punti Fissi (puntifissi)

Descrizione del problema

Una permutazione P[1..n] di dimensione n è una sequenza nella quale ciascun numero intero da 1 a n compare una e una sola volta. Esempi di

permutazioni sono le due sequenze 1,4,3,5,2 (n=5) e 3,2,1 (n=3) mentre la sequenza 1,2,3,5,1 (n=5) non è una permutazione poiché il numero 1 compare

due volte.

L'intero j si definisce punto fisso della permutazione P se vale P[j] = j, dove 1

<= j <= n. Ad esempio, nella permutazione 1,4,3,5,2 ci sono due punti fissi, 1 e 3, mentre la permutazione 5,4,3,2,1 non ha alcun punto fisso.

È interessante stabilire quante permutazioni di dimensione n hanno

esattamente k punti fissi. Per esempio, dato n=3, abbiamo sei permutazioni,

dove tra parentesi indichiamo il rispettivo numero di punti fissi: 1,2,3 (3); 1,3,2 (1); 2,1,3 (1); 2,3,1 (0); 3,1,2 (0); 3,2,1 (1). In tale situazione, non ci

sono permutazioni con k=2 punti fissi; per k=1, ne abbiamo tre, e così via.

Scrivere un programma che, ricevuti due numeri n e k, trova il numero di permutazioni di dimensione n che hanno esattamente k punti fissi.

Dati di input

Il file input.txt è composto da un'unica riga contenente i due numeri

interi n (1 <= n <= 9) e k (0 <= k <= n) separati da uno spazio.

Dati di output

Il file output.txt è composto da una sola riga contenente un intero non

negativo, ossia il numero di permutazioni di dimensione n che hanno esattamente k punti fissi.

Esempi di input/output

File input.txt File output.txt

5 2 20

File input.txt File output.txt

9 6 168

Page 11: Esercizi Facili IOI

File input.txt File output.txt

2 1 0

File input.txt File output.txt

9 0 133496

Page 12: Esercizi Facili IOI

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

Il file input.txt è composto da quattro righe. La i-esima riga contiene due

interi x e y separati da uno spazio che rappresentano le coordinate dell'i-esimo

punto (1 <= i <= 4). Tutte le coordinate sono minori o uguali a 1000 in valore assoluto.

Dati di output

Il file output.txt è composto da una sola riga contenente l'indicazione SI se i

quattro punti sono i vertici di un quadrato oppure l'indicazione NO in caso

contrario.

Esempi di input/output

File input.txt File output.txt

0 0

1 1

0 1

1 0

SI

File input.txt File output.txt

Page 13: Esercizi Facili IOI

0 0

0 0

1 1

0 1

NO

Page 14: Esercizi Facili IOI

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

Se la griglia descritta dall'input è un quadrato di parole stampare WORD SQUARE, altrimenti

stampare SOMETHING OTHER.

Esempi di input/output

File input.txt File output.txt

N R Y E

T U H O

F L R E

E C K F

SOMETHING OTHER

File input.txt File output.txt

Z H O R WORD SQUARE

Page 15: Esercizi Facili IOI

H H K C

O K Y L

R C L X

Autore/i

Page 16: Esercizi Facili IOI

Simmetria (simmetria)

Descrizione del problema

Dati una retta R e un punto A nel piano cartesiano, si definisce il punto B simmetrico ad Arispetto a R come l'altro estremo del

segmento AB perpendicolare a R, tale che la distanza di A rispetto a R è uguale a quella di B rispetto a R. In altre parole, AB è diviso in due parti uguali

dall'intersezione con R e, quindi, A è speculare a B rispetto a R. Si noti che,

qualora il punto A appartenga alla retta R, il punto B coincide con il punto A.

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

Il file input.txt è composto da due righe. La prima riga contiene quattro

interi xL1, yL1, xL2e yL2, separati da uno spazio, che rappresentano le coordinate di due punti L1 e L2appartenenti alla retta R.

La seconda riga contiene due interi xA e yA separati da uno spazio, che

rappresentano le coordinate del punto A.

Tutte le coordinate sono interi non superiori a 1000 in valore assoluto.

Dati di output

Il file output.txt è composto da una sola riga contenente due

interi xB e yB separati da uno spazio, che rappresentano le coordinate del punto B simmetrico ad A rispetto a R.

Esempi di input/output

File input.txt File output.txt

0 0 0 1

10 10

-10 10

File input.txt File output.txt

0 0 1 0

10 10

10 -10

Page 17: Esercizi Facili IOI

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

Contiene un unico numero, la soluzione del problema.

Esempi di input/output

File input.txt File output.txt

abcabc

abc

4

File input.txt File output.txt

abcabc

acb

0

Page 18: Esercizi Facili IOI

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.

Ha quindi deciso di costruire una tabella di moltiplicazioni di dimensione generica n × m. La tabella ha n righe, numerate da 1 a n, e m colonne,

numerate da 1 a m. La casella che si trova all'intersezione fra la riga i (1 <= i <= n) e la colonna j (1 <= j <= m), contiene il prodotto tra il numero i e

il numero j.

Prima di costruirla, Gianni vuole conoscere le frequenze delle cifre decimali (0, 1, ..., 9): si chiede quante volte ciascuna cifra decimale comparirà nella

tabella. Per esempio, se una casella contiene il numero 121, la cifra 1

comparirà due volte e la cifra 2 una volta. Tale conteggio va esteso a tutte le caselle della tabella, effettuando delle somme cumulative per ogni cifra

decimale e ottenendo così le frequenze.

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.

Scrivere un programma che, ricevuti i due interi n e m, scrive le frequenze

delle cifre decimali (in ordine crescente di cifra) che compaiono nella tabella di dimensione n x m.

Dati di input

Il file input.txt è composto da un'unica riga contenente i due numeri

interi n e m (1 <= n,m <= 1000) separati da uno spazio.

Dati di output

Il file output.txt è composto da dieci righe. La c-esima riga contiene la

frequenza della cifra c-1 (1 <= c <= 10): la prima riga deve contenere il numero di 0 presenti nella tabella delle moltiplicazioni, la seconda il numeri di

1, e così via.

Esempi di input/output

File input.txt File output.txt

Page 19: Esercizi Facili IOI

10 10 28

24

27

15

23

15

17

8

15

6

Page 20: Esercizi Facili IOI

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.

Per esempio, il reticolo 4x4 è grazioso, mentre non lo è il reticolo 3x3.

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.

Ogni ai.j è uguale a 0 oppure a 1.

Dati di output

Per ognuno dei t casi da esaminare, stampare YES se il relativo reticolo è grazioso; altrimenti

stampare NO.

Esempi di input/output

File input.txt File output.txt

3

1 1

0

4 4

1 0 1 0

1 1 1 0

YES

YES

NO

Page 21: Esercizi Facili IOI

0 1 0 1

0 0 0 0

3 3

0 0 1

0 0 1

1 1 1

Page 22: Esercizi Facili IOI

Problema di assegnamento (assegnamento)

Descrizione del problema

Il problema dell'assegnamento è uno dei problemi fondamentali di ottimizzazione combinatorica. In

una delle sue forme il problema potrebbe essere formulato come segue.

Ci sono n agenti numerati da 1 ad n ed n compiti pure numerati da 1 ad n. Ad ogni agente può

essere assegnata l'esecuzione di uno qualsiasi dei compiti con un costo che dipende dalla coppia

agente-compito. Il costo dell'agente i nell'effettuare il compito jviene denotato con cij. Viene

richiesto di effettuare tutti i compiti assegnando esattamente un agente a ciascun task in modo tale

da minimizzare il costo totale di tutti gli assegnamenti.

Scrivere un programma che risolva il problema dell'assegnamento.

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

File input.txt File output.txt

2

1 2

2 1

2

File input.txt File output.txt

2

1 2

3 4

5

Page 23: Esercizi Facili IOI

Conteggio di punti e rettangoli ( conta )

Descrizione del problema

È dato un rettangolo con un vertice nel'origine del piano cartesiano e il vertice opposto situato nel punto (W,H).

È dato un secondo rettangolo, situato completamente all'interno del precedente, i cui vertici hanno coordinate costituite da numeri interi.

Definiamo w e h la larghezza e l'altezza di questo secondo rettangolo.

Si chiede di calcolare il numero di punti aventi coordinate costituite da numeri interi che siano situati completamente all'interno del primo rettangolo e

all'esterno del secondo (escludendo cioè i punti situati sui lati).

Dati di input

L'unica riga del file di input contiene quattro numeri

interi: W, H, w e h(3<=W,H<=109,1<=w<=W-2, 1<=h<=H-2).

Dati di output

Il numero di punti richiesto.

Esempi di input/output

File input.txt File output.txt

3 3 1 1 0

File input.txt File output.txt

4 3 1 1 2

Page 24: Esercizi Facili IOI

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.

Si chiede di contare tutti i possibili divisori di un dato numero x.

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

Deve contenere il risultato richiesto dal problema.

Esempi di input/output

File input.txt File output.txt

12 6

File input.txt File output.txt

239 2

Page 25: Esercizi Facili IOI

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

Il file di output deve contenere la risposta richiesta dal problema.

Esempi di input/output

File input.txt File output.txt

239 16 15

File input.txt File output.txt

4638746747645731289347483927 6784789 1001783

Autore/i

Page 26: Esercizi Facili IOI

Fattorizzazione ( fattori )

Descrizione del problema

È dato il numero intero x. Si deve rappresentare tale numero come prodotto di due numeri interi a e b (x=a *b) scelti in modo tale che sia massima la somma

delle cifre che li compongono.

Dati di input

L'unica riga del file di input contiene il numero intero x (2 <=x<=109).

Dati di output

Il valore massimo della somma delle cifre dei numeri a e b.

Esempi di input/output

File input.txt File output.txt

6 7

File input.txt File output.txt

10 7

Page 27: Esercizi Facili IOI

Qualità di una stringa ( diff )

Descrizione del problema

Definiamo come qualità di una stringa la differenza fra la massima e la minima posizione nell'alfabeto delle lettere che la compongono.

Per esempio, facendo riferimento a lettere minuscole dell'alfabeto inglese, la qualità della stringa ab è 2-1=1, mentre la qualità della stringa abzc è 26-

1=25.

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

Inserire nel file di output la sottostringa richiesta. Se ci sono più sottostringhe

equivalenti, restituire quella che appare più a sinistra.

Esempi di input/output

File input.txt File output.txt

aba ab

File input.txt File output.txt

zzz z

Page 28: Esercizi Facili IOI

Rettangoli ( rettangoli )

Descrizione del problema

È dato un rettangolo con un vertice nell'origine del piano cartesiano e il vertice opposto situato nel punto (W,H).

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

Il numero di rettangoli richiesto.

Esempi di input/output

File input.txt File output.txt

1 1 1

File input.txt File output.txt

2 1 3

Page 29: Esercizi Facili IOI

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

Il file input.txt è composto da due righe. La prima riga contiene i due

interi n e k separati da uno spazio, dove 1 <= n <= 105 e 1 <= k <= min(n,

10). La seconda riga contiene ninteri a1, a2, ..., an separati da uno spazio, il cui valore è compreso tra -109 e 109.

Dati di output

Il file output.txt è composto da una sola riga contenente l'intero aj che è il k-

esimo minimo.

Esempi di input/output

File input.txt File output.txt

5 2

447891263 151798456 700562442 865711803 172370486

172370486

File input.txt File output.txt

1 1

395905565

395905565

Page 30: Esercizi Facili IOI

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.

I primi 8 numeri di questa sequenza sono: 1,3,6,8,10,13,15,18.

Si chiede di trovare an.

Dati di input

Il file di input contiene un intero n (1 <= n <= 105).

Dati di output

Deve contenere il risultato richiesto dal problema.

Esempi di input/output

File input.txt File output.txt

1 1

File input.txt File output.txt

8 18

Page 31: Esercizi Facili IOI

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

File input.txt File output.txt

0 0 1 0 0 1

10 10 12 10 10 12

YES

File input.txt File output.txt

0 0 1 0 0 1

0 0 10 0 0 5

NO

Page 32: Esercizi Facili IOI

Sistema di diseguaglianze ( sistema )

Descrizione del problema

È dato un sistema di diseguaglianze, del tipo: x>y, x>a, y<a, y<z (x, y e z sono le tre possibili variabili, a è un numero

intero compreso fra 0 e 100).

Scrivere un programma che calcoli il numero di soluzioni intere del sistema

dato, cioè il numero di terne (x,y,z) - con x, y e z compresi fa 0 e 100 - che soddisfano tut le diseguaglianze del sistema.

Dati di input

La prima riga del file di input contiene il numero n di diseguaglianze del

sistema (0<=n<=25). Ciascuna delle righe successive contiene una

diseguaglianza.

Dati di output

Il numero di terne richiesto.

Esempi di input/output

File input.txt File output.txt

6

x > 2

x < 5

y > 2

y < 5

z > 2

z < 5

8

File input.txt File output.txt

1

x > y

510050

Page 33: Esercizi Facili IOI

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.

Scrivere un programma che, data a sequenza di numeri interi, determina se

esiste un segmento la cui somma sia uguale a x.

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

File input.txt File output.txt

4

1 4 2 3

5

3 4

File input.txt File output.txt

4

1 2 3 4

-5

-1 -1

Page 34: Esercizi Facili IOI

Descrizione del problema

Conveniamo di chiamare ennesima superpotenza di 2 il valore di 22n

. Ad esempio la terza

superpotenza di 2 è 223

= 28 = 256. Si chiede di calcolare la ennesima superpotenza di 2 modulo m.

Dati di input

Il file di input contiene due interi: n (0 <= n <= 105) ed m (2 <= m <= 10

4).

Dati di output

Il risultato richiesto dal problema.

Esempi di input/output

File input.txt File output.txt

3 1000 256

File input.txt File output.txt

10 10 6

Page 35: Esercizi Facili IOI

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.

Consideriamo un gioco matriciale con X 1,..., n e Y 1,..., m e denotiamo la matrice con K.

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

Dare in uscita i valori di maximin e di minimax.

Esempi di input/output

File input.txt File output.txt

3 3

4 -1 -3

-2 1 3

0 2 -3

-2 2

File input.txt File output.txt

3 4

-1 0 2 1

-2 0 1 0

Page 36: Esercizi Facili IOI

2 1 -1 -2

Page 37: Esercizi Facili IOI

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:

le loro coordinate sono intere; le loro coordinate non superano 10

9 in valore assoluto;

l'area del triangolo ABC è non nulla.

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

File input.txt File output.txt

9 4 YES

3 9

6 3

18 0