Due indovinelli semplici semplici.

Programmazione, algoritmica, teoria dell'informazione, ...
Rispondi
mykelyk
Messaggi: 12
Iscritto il: 01 gen 1970, 01:00

Due indovinelli semplici semplici.

Messaggio da mykelyk »

1) Scambiare il valore di due int a, b senza usare variabili temporanee.
2) Ottimizzare al massimo la seguente funzione:

Codice: Seleziona tutto

int foo(int n, int k){
int r = 0;
for(int i = 0; i<=n; i++){
r += i * k;
}
return r;
}
Avatar utente
MateCa
Messaggi: 98
Iscritto il: 23 ago 2006, 23:27
Località: Camurana

Messaggio da MateCa »

1) easy
a=a+b
b=a-b
a=a-b
Parlare oscuramente lo sa fare ognuno, ma chiaro pochissimi. (G. Galilei)
marcuz
Messaggi: 70
Iscritto il: 26 feb 2007, 21:54
Località: Pisa
Contatta:

Messaggio da marcuz »

indovinello 2:

$ k + 2k + 3k + ... +nk = \frac{n(n+1)}{2}k $

Codice: Seleziona tutto

int foo(int n, int k) {
   return n*(n+1)/2*k;
}
Nessun uomo è un'isola (J. Donne)
mykelyk
Messaggi: 12
Iscritto il: 01 gen 1970, 01:00

Messaggio da mykelyk »

MateCa ha scritto:1) easy
a=a+b
b=a-b
a=a-b
Corretto, ma esiste un sistema più efficiente(anche se di poco):
a ^= b;
b ^= a;
a ^= b;
mykelyk
Messaggi: 12
Iscritto il: 01 gen 1970, 01:00

Messaggio da mykelyk »

marcuz ha scritto:indovinello 2:

$ k + 2k + 3k + ... +nk = \frac{n(n+1)}{2}k $

Codice: Seleziona tutto

int foo(int n, int k) {
   return n*(n+1)/2*k;
}
Giusto!
Rispondi