Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Tutto e di + - Olimpiadi d'informatica
Forum - Tutto e di + - Olimpiadi d'informatica

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 12:27
Venerdì, 18/11/2005
Chi ha partecipato oggi alle selezioni per le olimpiadi d'informatica?

Le risposte agli esercizi di programmazione vi venivano praticamente tutte "B"?


Il mio blog: https://piero.dev
PM Quote
Avatar
Nophiq (Founder Member)
Expert


Messaggi: 537
Iscritto: 15/11/2004

Segnala al moderatore
Postato alle 14:34
Venerdì, 18/11/2005
Ecco quello che mi ricordo:

Logica:
-------
# Il problema riguardo alla gallina e mezzo che fa un uovo e mezzo... ho messo 54

# IL primo problema, quello dei tipi che dipingono la stanza... 180 min

# Gli alunni di pitagora ho messo 28

Programmazione:
---------------
# Il programma con all'interno la funzione mistero... 3 2 1 0

# Uno mi veniva... a=-1, b=-1

# Un'altro simile... a:10, b=1

# Il problema delle matrici ho messo la disposizione degli 1 a croce.

# il primo esercizio a=5, b=5

Poi non me li ricordo pi?, chi ne ha la possibilit? per favore posti qualche indizio.

Grazie!

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 15:39
Venerdì, 18/11/2005
Ecco il testo completo, cos? anche chi non ha fatto la prova pu? provarci qui (Zizzius we need help! :D )


Esercizi di logica
1#
Se un uomo dipinge una stanza in 4 ore e un suo amico ne impiega 2, quanto tempo impiegherebbero dipingendola insieme? (si assume che quando lavorano insieme, ciascuno opera alla stessa velocit? di quando lavora da solo).
a) 75 minuti
b) 80 minuti
c) 90 minuti
d) 180 minuti

2#
Se una gallina e mezza fa in media un uovo e mezzo in un giorno e mezzo, quante uova fanno in media 9 galline in 9 giorni?
Risposta aperta

3#
Quanti modelli di macchine di formula 1 ha mario se sono tutte ferrari meno tre, sono tutte mclaren meno due ed ha anche una williams?
a) 3
b) 4
c) 5
d) 6

4#
Una maestra ha una scatola di 1300 penne, e vuole distribuirle in modo equo ai suoi alunni. Inizialmente distribuisce ad ogni alunno un numero di penne pari al numero di alunni stessi. Dopo di che, visto che ne rimangono ancora molte, decide di darne altre due ciascuno. ALla fine nella scatola ne rimangono solo cinque, che ella tiene per se. Quanti sono gli alunni?
Risposta aperta

5#
Al ritorno dalla guerra durata parecchi anni, un giovane torna a casa. Ad attenderlo trova la cognata del marito dell'unica sorella di sua madre. Dato che il marito non ha fratelli, chi ? la donna che lo ha accolto?
a) madre
b) sorella
c) zia
d) nonna


6#
Fondendo una statua di bronzo alta 50cm e piena internamente, realizzo con il bronzo fuso ottenuto tante statuette simili (cioe' con le stesse proporzioni, della statua originale), anch'esse internamente piene, ma dell'altezza di 10 cm. Quante statuette riesco a realizzare?
a) 5
b) 25
c) 50
d) 125

7#
A Policrate che gli domandava quanti erano i suoi allievi, cos? risposte Pitagora:
"I miei allievi possono essere suddivisi in insiemi disgiunti; in particolare:
- la met? coltiva la matematica
- la quarta parte si dedica allo studio della natura
- la settima parte ascolta con religioso silenzio le mie parole
- inoltre ci sono tre allievi che non fanno nessuna delle cose precedenti".
Quanti erano gli allievi di Pitagora?
Risposta aperta

8#
Data una torre, costruita inserendo N = 23 mattoncini LEGO uno sopra l'altro, indicare il numero minimo di porzioni in cui suddividere la torre per essere sicuri che sia possibile prendere un qualsiasi numero (compreso tra 1 e 22, estremi inclusi) di mattoncini senza smontare le porzioni e selezionando un opportuno insieme di porzioni.
Ad esempio, se N = 6 allora la risposta ? 3. Infatti la divisione dei mattoncini in tre porzioni di dimensioni 1,2 e 3 soddisfa i requisiti. Inoltre, non esiste una soluzione che divide i mattoncini in due sole porzioni; infatti. se si dividono 6 mattoncini in porzioni da 1 e 5 mattoncini non si riesce a formare un insieme di 2 (oppure di 3 o di 4) mattoncini; un analogo problema sorge se si dividono 6 mattoncini in due portzioni da 2 e 4 oppure in due porzioni da 3.
Se N = 23, qual'? il numero minimo di porzioni?
a) 4
b) 5
c) 6
d) 7

9#
Il direttore di un ristorante con capienza massima 150 posti non ricorda quante erano le persone da lui servite in occasione dello scorso cenone di fine anno. Ricorda per? che volendo sistemare tutte le persone servite in tavoli da 3 ne restava fuori esattamente una; inoltre, la stessa cosa succedeva sistemando tutte le persone in tavoli da 5 o tutte in tavoli da 7.
Quante erano le persone servite in occasione dello scorso cenone di fine anno?
Risposta aperta

10#
Siano A e B due variabili booleane. Quali delle seguenti espressioni ? equivalente a

not (A or B) and (A or (A and B))

a) (not A and not B and A) or B
b) not A or (not B and A) or (A and B)
c) not A and not B and A and B
d) nessuna delle risposte precedenti

11#
Un compito in classe inizia quando le lancette dell'orologio sono sovrapposte fra le 8 e le 9 e termina quando sono sovrapposte fra le 10 e le 11. Quanti minuti dura il compito?
a) esattamente 120
b) fra 120 e 124
c) fra 124 e 128
d) nessuna delle precedenti

12#
In un allevamento di bovini bisogna selezionare il pi? leggero tra 4 capi, avendo a disposizione un unico tipo di bilancia che, date due coppie di bovini, indica la coppia pi? leggere (si assuma che non esistano due coppie di bovini dello stesso identico peso).
Nota bene: la bilancia non permette di confrontare il peso di due bovini fra loro e non fornisce il peso di una coppia di bovini.
Dire quale delle seguenti affermazioni ? vera:
a) 2 pesate sono sempre sufficienti
b) 2 pesate non sono sempre sufficienti e 3 pesate sono sempre sufficienti
c) ci sono casi in cui questo tipo di bilancia non permette di trovare il bovino pi? leggero
d) nessuna delle precedenti



Esercizi di programmazione (Finalmente..)

1#
Dopo l'esecuzione della seguente porzione di codice:

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2.  
  3. void funzione(int *a, int b){
  4.  int temp=*a;
  5.  *a=b;
  6.  b=temp;
  7. };
  8.  
  9. main(){
  10. int a = 2;
  11. int b = 5;
  12. funzione(&a,b);
  13. }



Quanto valgono a e b?
Rispota aperta

2#
Si consideri la seguente funzione.
Codice sorgente - presumibilmente C++

  1. int funzione(){
  2.  int contatore = 0;
  3.  int sum = 0;
  4.  while(contatore <= 4){
  5.  contatore = contatore + 1;
  6.  sum = sum + contatore;
  7.  }
  8.  return sum;
  9. }



Quale valore restituisce la funzione?
a) 10
b) 15
c) 16
d) nessuna delle precedenti.



Ora devo scappare, finisco di ricopiare tutto il testo non appena torno da allenamento, intanto pensateci su questi e provate a fornire una risposta ;)


Il mio blog: https://piero.dev
PM Quote
Avatar
Ivan (Founder Member)
Newbie


Messaggi: 20
Iscritto: 02/10/2005

Segnala al moderatore
Postato alle 18:37
Venerdì, 18/11/2005
Sinceramente l'ho trovato pi? lungo e difficile di quello dell'anno scorso...:-|

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 21:45
Venerdì, 18/11/2005
Ecco il seguito:



#3
Si consideri la seguente funzione:
Codice sorgente - presumibilmente C++

  1. void calcola(int *vett, int n){
  2.  int x,y;
  3.  int i,j;
  4.  for(i=0; i<n; i++){
  5.   y = vett[0];
  6.   for (j=0; j<n-1; j++){
  7.   x = vett[j+1];
  8.   vett[j+1] = y;
  9.   y = x;
  10.   }
  11.   vett[0] = y;
  12.  }
  13.  
  14.  
  15. }



Assumendo che vett contenga il vettore [10,9,8,7,6,5,4,3,2,1], quali sono gli elementi di vett dopo l'esecuzione di calcola (usando 10 come secondo parametro)?
a) [1,2,3,4,5,6,7,8,9,10]
b) [10,9,8,7,6,5,4,3,2,1]
c) [1,3,5,7,9,2,4,6,8,10]
d) nessuna delle precedenti

4#
Cosa stampa il seguente programma?
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2.  
  3. int funzione(int arr[], int dim){
  4.  int i = 0;
  5.  int t = 0;
  6.  
  7.  if (dim % 2 == 1){
  8.   while(1<dim){
  9.     t=arr[ i];
  10.     arr[ i] = arr[dim-i-1];
  11.     arr[dim-i-1] = t;
  12.     i=i+1;
  13.   }
  14.  } else{
  15.   while(i<dim/2){
  16.     t=arr[ i];
  17.     arr[ i] = arr[dim-i-1];
  18.     arr[dim-i-1] = t;
  19.     i=i+1;
  20.   }
  21.  }
  22.  
  23.  return arr[0];
  24. }
  25.  
  26. main(){
  27.  int arr1[10] = {1,2,3,4,5,6,7,8,9,10};
  28.  int arr2[11] = {1,2,3,4,5,6,7,8,9,10,11};
  29.  int a = funzione(arr1,10);
  30.  int b = funzione(arr2,11);
  31.  printf("a=%d, b=%d\n",a,b);
  32. }



Risposte:
a) a=10, b=1
b) a=1, b=1
c) a=10, b=11
d) a=1, b=11


#5
Costa stampa il seguente programma?

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2.  
  3. int funzione1(int arr[]){
  4.  int i = 1;
  5.  while(arr[ i] != -1) i = i * 2;
  6.  return i;
  7. }
  8.  
  9. int funzione2(int arr[], int f, int k){
  10.  int i = 0;
  11.  int m;
  12.  while(i<=f){
  13.  m=(i+f)/2;
  14.  if (arr[m] == k) return m;
  15.  if ((arr[m]==-1) || (arr[m] > k)) f = m - 1;
  16.  else i = m + 1;
  17.  }
  18.  return -1;
  19. }
  20.  
  21. main(){
  22.  int arr[10] = {1,2,4,8,-1,-1,-1,-1,-1,-1};
  23.  int f = funzione1(arr);
  24.  int a = funzione2(arr,f,4);
  25.  int b = funzione2(arr,f,7);
  26.  printf("a=%d, b=%d\n",a,b);
  27. }



Risposte:
a) a=2, b=4
b) a=2, b=-1
c) a=-1, b=4
d) a=-1, b=-1

6#
Data la seguente funzione che inizializza i valori di un array bidimensionale "matrice":

Codice sorgente - presumibilmente C++

  1. #define N 5
  2. void inizializza(){
  3.  int matrice[N][N];
  4.  int riga, colonna;
  5.  for (riga = 0; riga<N; riga++){
  6.   for (colonna = 0; colonna < N; colonna++){
  7.    if (riga==colonna) matrice[riga][colonna] = 1;
  8.    else if(riga+colonna==N-1) matrice[riga][colonna]=1;
  9.    else if (riga<colonna) matrice[riga][colonna] = 0;
  10.    else matrice[riga][colonna] = matrice[colonna][riga];
  11.   }
  12.  }
  13.  for (riga=0; riga<N; riga++) {
  14.   for (colonna=0; colonna<N; colonna++) printf("%d ", matrice[riga][colonna]);
  15.   printf("\n");
  16.  }
  17. }



Indicare quale tra le seguenti configurazioni vengono stampate dalla procedura "inizializza".
Risposte:
a)
1 1 1 1 1
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
1 1 1 1 1

b)
1 0 0 0 1
0 1 0 1 0
0 0 1 0 0
0 1 0 1 0
1 0 0 0 1

c)
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 1 0 0 0
1 0 0 0 0

d)
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1

#7
Sia data la seguente funzione ricorsiva:

Codice sorgente - presumibilmente C++

  1. int mistero(int m, int n){
  2.  if (m == 0) return n;
  3.  else if (n == 0) return mistero(m-1, 1);
  4.  else return mistero(mistero(m-1, n-1),n-1);
  5. }



Calcolare quale tra le seguenti risposte corrisponde ai valori restituiti invocando:

Codice sorgente - presumibilmente Plain Text

  1. printf("%d %d %d %d\n",mistero(0,3), mistero(1,3), mistero(2,3), mistero(3,3));



Risposte:
a) 3 1 2 0
b) 3 2 1 0
c) 0 1 2 3
d) nessuna delle risposte precedenti

#8
Si consideri la seguente funzione A.

Codice sorgente - presumibilmente C++

  1. int B(int n);
  2.  
  3. int A(int n){
  4.  if (n>i) return n*B(n+1);
  5.  else return 1;
  6. }
  7.  
  8. int B(int n){
  9.  if (n>i) return (n-1)*A(n-2);
  10.  else return 1;
  11. }



Indicare quali sono i valori restituiti dalle invocazioni
A(1), A(2), A(3), A(4), A(5).

Risposte:
a) 1,4,24,192,1920
b) 1,4,36,576,14400
c) 1,4,16,256,65536
d) nessuna delle precedenti



Forza, provate a risolverli ;)

Ultima modifica effettuata da pierotofy il 18/11/2005 alle 21:47


Il mio blog: https://piero.dev
PM Quote
Avatar
andriy88 (Ex-Member)
Pro


Messaggi: 118
Iscritto: 04/11/2005

Segnala al moderatore
Postato alle 22:02
Venerdì, 18/11/2005
troppo lungo. hii i hii ihi
Me li stampo e se ho tempo li provo a fare a scuola.

PM Quote
Avatar
Nophiq (Founder Member)
Expert


Messaggi: 537
Iscritto: 15/11/2004

Segnala al moderatore
Postato alle 14:37
Sabato, 19/11/2005
Ecco come ho risposto:

Logica:
-------
1) d = 180 min - ma ho decisamente sbagliato penso che la risposta giusta sia 80 min
2) 54
3) b = 4
4) in bianco
5) c = zia
6) b = 25
7) 28
8) in bianco
9) in bianco
10) in bianco
11) d = nessuna delle precedenti
12) b = tre pesate sono sempre sufficienti

Programmazione:
---------------
1) a=5; b=5
2) a = 10;
3) Non me lo ricordo
4) a = a=10; b=1;
5) d = a=-1 b=-1
6) b
7) b = 3 2 1 0
8) b = 1, 4, 36, 576, 14400

PM Quote
Avatar
Nophiq (Founder Member)
Expert


Messaggi: 537
Iscritto: 15/11/2004

Segnala al moderatore
Postato alle 11:50
Domenica, 20/11/2005
Facendo i calcoli con calma:

Logica:
-------
1) b = 80 min
9) I clienti sono 3*5*7+1=106

PM Quote
Avatar
Zizzius (Honoris User)
Guru


Messaggi: 675
Iscritto: 28/02/2005

Segnala al moderatore
Postato alle 16:59
Martedì, 22/11/2005
Voi quanti punti avete fatto? Io 23 e mi sono classificato 1?! :rotfl::D:k:

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo