Pagina 1 di 1

Due indovinelli semplici semplici.

Inviato: 09 giu 2007, 20:11
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;
}

Inviato: 10 giu 2007, 08:59
da MateCa
1) easy
a=a+b
b=a-b
a=a-b

Inviato: 10 giu 2007, 16:19
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;
}

Inviato: 10 giu 2007, 16:39
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;

Inviato: 10 giu 2007, 17:06
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!