Sei sulla pagina 1di 37

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 NO

ABBA

File input.txt File output.txt

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.

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
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
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.
Esempi di input/output

File input.txt File output.txt

1 2 3 Scatole uguali

3 2 1

File input.txt File output.txt

2 2 3 Prima scatola piu' grande della seconda

3 2 1

File input.txt File output.txt

2 2 3 Prima scatola piu' piccola della seconda

3 2 3

File input.txt File output.txt

3 4 5 Scatole non confrontabili

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.

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
001122 NO

0001112222 SI

000111222

File input.txt File output.txt

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

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

??? 64
abc

File input.txt File output.txt

?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

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
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
File input.txt File output.txt

2 1 0

File input.txt File output.txt

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

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 SI

1 1

0 1

1 0

File input.txt File output.txt


0 0 NO

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

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 SOMETHING OTHER
T U H O
F L R E
E C K F

File input.txt File output.txt

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

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
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 4
abc

File input.txt File output.txt

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.

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


10 10 28

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.

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

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

File input.txt File output.txt

2 5
1 2
3 4
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
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
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
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
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
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
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 172370486
447891263 151798456 700562442 865711803 172370486

File input.txt File output.txt

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.

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
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 YES
10 10 12 10 10 12

File input.txt File output.txt

0 0 1 0 0 1 NO
0 0 10 0 0 5
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 8
x > 2
x < 5
y > 2
y < 5
z > 2
z < 5

File input.txt File output.txt

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.

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 3 4
1 4 2 3
5

File input.txt File output.txt

4 -1 -1
1 2 3 4
-5
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 <= 104).

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
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 xX e yY. 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 -2 2
4 -1 -3
-2 1 3
0 2 -3

File input.txt File output.txt

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:

 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