Multiply by 8 without using multiplication or addition. Now do the same with 7.
Moltiplicate un qualunque numero per 8 senza fare né moltiplicazioni né addizioni.
Poi fate la stessa cosa col 7.
Come lo interpretate?
Come lo risolvete?
Tratto da Wu-riddles - Computer Science
http://www.ocf.berkeley.edu/~wwu/riddles/cs.shtml
Gianfranco
Moltiplicare senza moltiplicare
Moderatori: Gianfranco, Bruno
Questo forum è una sezione del PORTALE DI BASE CINQUE
-
- Supervisore del sito
- Messaggi: 1720
- Iscritto il: ven mag 20, 2005 9:51 pm
- Località: Sestri Levante
- Contatta:
Al volo!
A me viene in mente questo fatto semplice
semplice semplice (e potrei aggiungere un
altro semplice).
Prendo un numero (56) e scrivo uno zero
dopo la cifra finale (560). Quindi divido
l'ultimo numero ottenuto per 5 (560:5 = 112)
e sottraggo il risultato al dividendo
(560-112 = 448). Così ho trovato il prodotto
del numero iniziale per 8 (56x8 = 448).
Oppure, senza divisioni, a 560 si toglie
due volte 56.
Storia simile per 7. In questo caso, però,
dopo la/e sottrazione/i tolgo al risultato anche (di
nuovo) il numero iniziale:
448-56 = 392, 56x7 = 392.
Vabbe'... senz'altro è una boiata (e ultimamente
ne ho scritte!), visto che una moltiplicazione
implicita c'è e la sottrazione e la divisione
potrebbero essere ricondotte all'addizione e
alla moltiplicazione.
Però vengo da un inzio di giornata piuttosto
movimentato e fradicio
A Bologna è in corso un bell'acquazzone, e
chi va a piedi è costretto a subire la canfoneria
di coloro che si spostano ben protetti nelle
proprie autovetture. Sono stato schizzato
più volte e su tutti i lati (solo dalla pioggia vera
e propria sono riuscito a ripararmi) e ritrovarsi
con i vestiti bagnati e sporchi non è certo una
bella soddisfazione!
Presa la corriera, dopo una decina di minuti
abbiamo tamponato violentemente un furgone.
Per fortuna non è successo nulla di grave
alle persone, ma l'accaduto non ha favorito
certamente uno scorrimento normale delle
cose. Ritardi e nuova acqua di pozzanghera
sui vestiti!
Buona giornata a tutti
A me viene in mente questo fatto semplice
semplice semplice (e potrei aggiungere un
altro semplice).
Prendo un numero (56) e scrivo uno zero
dopo la cifra finale (560). Quindi divido
l'ultimo numero ottenuto per 5 (560:5 = 112)
e sottraggo il risultato al dividendo
(560-112 = 448). Così ho trovato il prodotto
del numero iniziale per 8 (56x8 = 448).
Oppure, senza divisioni, a 560 si toglie
due volte 56.
Storia simile per 7. In questo caso, però,
dopo la/e sottrazione/i tolgo al risultato anche (di
nuovo) il numero iniziale:
448-56 = 392, 56x7 = 392.
Vabbe'... senz'altro è una boiata (e ultimamente
ne ho scritte!), visto che una moltiplicazione
implicita c'è e la sottrazione e la divisione
potrebbero essere ricondotte all'addizione e
alla moltiplicazione.
Però vengo da un inzio di giornata piuttosto
movimentato e fradicio
A Bologna è in corso un bell'acquazzone, e
chi va a piedi è costretto a subire la canfoneria
di coloro che si spostano ben protetti nelle
proprie autovetture. Sono stato schizzato
più volte e su tutti i lati (solo dalla pioggia vera
e propria sono riuscito a ripararmi) e ritrovarsi
con i vestiti bagnati e sporchi non è certo una
bella soddisfazione!
Presa la corriera, dopo una decina di minuti
abbiamo tamponato violentemente un furgone.
Per fortuna non è successo nulla di grave
alle persone, ma l'accaduto non ha favorito
certamente uno scorrimento normale delle
cose. Ritardi e nuova acqua di pozzanghera
sui vestiti!
Buona giornata a tutti
Ultima modifica di Br1 il mar set 04, 2007 11:38 am, modificato 4 volte in totale.
Bruno
-
- Livello 5
- Messaggi: 337
- Iscritto il: sab nov 19, 2005 5:39 pm
- Località: World (Wide Web) - IT
Penso che il quesito posto alla fonte richieda una risposta "computeristica" più che un approccio puramente di calcolo matematico.
Quindi dovremmo scrivere un programmino che ci permetta di fare il prodotto per 8 e poi per 7 senza utilizzare gli operatori usuali.
Una volta scoperto come moltiplicare per 8 ( e qui ci devo ancora pensare, la mia idea di base sarebbe lavorare sulla stringa binaria di rappresentazione del numero), per moltiplicare per 7 basta utilizzare il codice del prodotto per 8 e sottrarre alla cifra restituita il numero originario.
Spero di essermi spiegata decentemente (a Milano c'è un vento tropicale). Ora provo a pensare al "*8"...
ciao
_edit postumo
In C++ non c'è mica l'operatore leftshift << che fa quello che vogliamo?
(antichi ricordi, poi vado a controllare)
Quindi x<<3 vuol dire spostiamo x a sx di 3 posti nella stringa del numero, i.e. moltiplichiamo per 8.
Vado a cercare i miei appunti di C++ (primo lavoro di traduzione che ho fatto, guida della Borland a C++, millenovecentoottantaqualcosa...) uff bei tempi...
Quindi dovremmo scrivere un programmino che ci permetta di fare il prodotto per 8 e poi per 7 senza utilizzare gli operatori usuali.
Una volta scoperto come moltiplicare per 8 ( e qui ci devo ancora pensare, la mia idea di base sarebbe lavorare sulla stringa binaria di rappresentazione del numero), per moltiplicare per 7 basta utilizzare il codice del prodotto per 8 e sottrarre alla cifra restituita il numero originario.
Spero di essermi spiegata decentemente (a Milano c'è un vento tropicale). Ora provo a pensare al "*8"...
ciao
_edit postumo
In C++ non c'è mica l'operatore leftshift << che fa quello che vogliamo?
(antichi ricordi, poi vado a controllare)
Quindi x<<3 vuol dire spostiamo x a sx di 3 posti nella stringa del numero, i.e. moltiplichiamo per 8.
Vado a cercare i miei appunti di C++ (primo lavoro di traduzione che ho fatto, guida della Borland a C++, millenovecentoottantaqualcosa...) uff bei tempi...
mathmum
...la vita è complessa: ha componenti reali ed immaginarie...
...la vita è complessa: ha componenti reali ed immaginarie...
Ciao, Mathmum!
Sì, l'avevo capita così anch'io, ma con "computeristico"
e "programmino" condivido veramente poco ( ) e
quindi sono rimasto (sia pure banalmente) nello spazio
minuto che va da penna a carta.
Come ha appena scritto il nostro Pasquale in un altro
post, tolgo anch'io l'incomodo.
A voi la palla
Sì, l'avevo capita così anch'io, ma con "computeristico"
e "programmino" condivido veramente poco ( ) e
quindi sono rimasto (sia pure banalmente) nello spazio
minuto che va da penna a carta.
Come ha appena scritto il nostro Pasquale in un altro
post, tolgo anch'io l'incomodo.
A voi la palla
Bruno
Re: Moltiplicare senza moltiplicare
In base 2 basta aggiungere 3 zeri ...Gianfranco ha scritto:Moltiplicate un qualunque numero per 8 senza fare né moltiplicazioni né addizioni.
[Sergio] / $17$
Volendo giocare con le basi e col computer, allora con un "trasformatore" di basi, si esprime il numero in base 8, 7, o altra che dir si voglia, e si aggiunge uno zero; quindi si ritrasforma in base 10.
Comunque le soluzioni di Bruno rispettano le condizioni e potremmo combinarle anche così:
prodotto per 8: aggiungo uno zero a destra del numero iniziale e sottraggo due volte il numero iniziale; vale a dire
n*8=n*(10-2)
prodotto per 7: similmente, aggiungo uno zero e sottraggo tre volte il numero iniziale
Però mi sa che Gianfranco intende tutt'altro...forse vuole qualcosa in Decimal Basic, in cui compare solo una sottrazione:
INPUT PROMPT " numero da moltiplicare per 8 e per 7 -> ": n
print
LET a$=BSTR$(n,2)&"000"
LET p = BVAL(a$,2)
PRINT n;"x";8;"=";p
PRINT n;"x";7;"=";p-n
END
(traduzione del commento di Quelo)
Comunque le soluzioni di Bruno rispettano le condizioni e potremmo combinarle anche così:
prodotto per 8: aggiungo uno zero a destra del numero iniziale e sottraggo due volte il numero iniziale; vale a dire
n*8=n*(10-2)
prodotto per 7: similmente, aggiungo uno zero e sottraggo tre volte il numero iniziale
Però mi sa che Gianfranco intende tutt'altro...forse vuole qualcosa in Decimal Basic, in cui compare solo una sottrazione:
INPUT PROMPT " numero da moltiplicare per 8 e per 7 -> ": n
LET a$=BSTR$(n,2)&"000"
LET p = BVAL(a$,2)
PRINT n;"x";8;"=";p
PRINT n;"x";7;"=";p-n
END
(traduzione del commento di Quelo)
_________________
$\text { }$ciao ciao
E' la somma che fa il totale (Totò)
$\text { }$ciao ciao
E' la somma che fa il totale (Totò)
Re: Moltiplicare senza moltiplicare
Facile! Basta aggiungere tre zeri e poi fare a mente una normalissima divisione per 125Gianfranco ha scritto:Moltiplicate un qualunque numero per 8 senza fare né moltiplicazioni né addizioni.
Sì, lo so, è una stupidata, ma credo che una moltiplicazione implicita sia ammessa e poi si tratta solo di una divisione facile facile(beh, quasi )
Saluti.
Lo scopo principale di una dichiarazione DATA è quello di dare dei nomi alle costanti; anziché inserire ogni volta 3.141592653589793 come valore di $\pi$, con una dichiarazione DATA si può assegnare tale valore alla variabile PI che può essere poi usata per indicare la costante. Ciò rende anche più semplice modificare il programma, qualora il valore di $\pi$ dovesse cambiare.
-Da un vecchio manuale FORTRAN della Xerox
-Da un vecchio manuale FORTRAN della Xerox
-
- Supervisore del sito
- Messaggi: 1720
- Iscritto il: ven mag 20, 2005 9:51 pm
- Località: Sestri Levante
- Contatta:
Complimenti a tutti!
Bruno, direi che le tue soluzioni sono accettabilissime.
Qui nel Tigullio invece c'era un bel sole!
Mathmum, giuste anche le tue considerazioni. Ricordo che nel linguaggio-macchina del microprocessore 6502 (quello dei mitici Commodore e dell'Apple II) c'era propriol'istruzione SHIFT di un byte, spostava tutti i bit di un posto verso "sinistra" e inseriva uno zero in fondo. In pratica serviva a moltiplicare per 2 (10) senza eseguire una moltiplicazione. SHIFTANDO 3 volte, si moltiplica per 8...
Poi, sottraendo il moltiplicando dal risultato, lo si moltiplica per 7...
Quelo, ... in pratica è quello che dici tu.
Pasquale, ... e anche quello che dici tu.
Non avevo in mente nulla di specifico. Qualunque interpretazione è la benvenuta!
Zerinf, anche la "moltiplicazione implicita" è benvenuta! Di fatto "aggiungere uno 0" è un'operazione diversa dall'eseguire una moltiplicazione.
Gianfranco.
Bruno, direi che le tue soluzioni sono accettabilissime.
Qui nel Tigullio invece c'era un bel sole!
Mathmum, giuste anche le tue considerazioni. Ricordo che nel linguaggio-macchina del microprocessore 6502 (quello dei mitici Commodore e dell'Apple II) c'era propriol'istruzione SHIFT di un byte, spostava tutti i bit di un posto verso "sinistra" e inseriva uno zero in fondo. In pratica serviva a moltiplicare per 2 (10) senza eseguire una moltiplicazione. SHIFTANDO 3 volte, si moltiplica per 8...
Poi, sottraendo il moltiplicando dal risultato, lo si moltiplica per 7...
Quelo, ... in pratica è quello che dici tu.
Pasquale, ... e anche quello che dici tu.
Non avevo in mente nulla di specifico. Qualunque interpretazione è la benvenuta!
Zerinf, anche la "moltiplicazione implicita" è benvenuta! Di fatto "aggiungere uno 0" è un'operazione diversa dall'eseguire una moltiplicazione.
Gianfranco.