Implementare una funzione divide(int a, int b, int c)che stampa il valore di base 10 di a/b. senza usare alcuna matematica a virgola mobile né BigInteger/ BigDecimalo librerie equivalenti di sorta. È necessario stampare almeno ccaratteri precisi all'interno dell'insieme di 0123456789., ad eccezione della (possibile) eccezione al punto 4 seguente.
aebpuò essere qualsiasi numero intero a 32 bit. Aggiornamento: se, ai fini del golf, si desidera che l'input sia primitivo a 64 bit, va bene, ma non è necessario supportare l'intero intervallo di dati a 64 bit.- Non è necessario verificare che
csia positivo (anche se si spera che il programma non si blocchi) in caso contrario. - Il limite minimo supportato per
cè500. Va bene se il tuo programma non supporta i valori di cuicsopra500, ma va bene anche se lo fa. - Per i numeri che si dividono uniformemente, è la tua scelta se stampare zero aggiuntivi (in base al valore di
c) o niente. - Non è necessario essere in grado di utilizzare la funzione per eseguire ulteriori attività con il quoziente, l'unico obiettivo è la stampa.
- Per i numeri tra
-1e1, è la tua scelta se stampare un vantaggio0. Tuttavia, questo è l'unico scenario in cui è accettabile la stampa di uno zero iniziale e si può stampare solo uno di questi zero. - È possibile utilizzare qualsiasi logica di arrotondamento / piano / soffitto preferita per l'ultimo decimale.
- Per una risposta negativa, è necessario stampare un vantaggio
-. Questo non conta ai finic. Tuttavia, è la vostra scelta se si desidera stampare,+o nulla per una risposta positiva. - Divisione intera e modulo intero sono entrambi consentiti. Tuttavia, tieni presente che sei limitato alle primitive, a meno che tu non scelga di implementare la tua
BigInteger/BigDecimallibreria che conta per la lunghezza del tuo codice. - Non hai bisogno di gestire l'
bessere0, anche se puoi se vuoi. Il tuo programma può entrare in un ciclo infinito, o crash, seb=0e non sarai penalizzato. - Leggero cambio di regola per commento. Per assicurarsi che il campo di gioco è il livello, mentre
aebsono garantiti per essere di 32 numeri interi bit, è possibile utilizzare gli interi lunghi 64 bit. Se la tua lingua scelta va oltre i numeri interi a 64 bit come primitiva, non puoi mai usare quella funzionalità (fingi che sia limitata a 64 bit). - Un altro punto che non è chiaro (non dovrebbe cambiare nessuna delle attuali risposte valide, però): mentre
cpuò essere interpretato come il numero di caratteri stampati o il numero di spazi dopo il decimale, il programma deve utilizzare incqualche modo in modo pertinente per decidere quanti caratteri stampare. In altre parole,divide(2,3,2)dovrebbe essere un output molto più breve didivide(2,3,500); non va bene stampare 500 caratteri senza riguardoc. - In realtà non mi interessa il nome della funzione.
dva bene per il golf.
Ingresso
stdinSono accettate sia una chiamata di funzione che la lettura da . Se leggi da stdin, qualsiasi carattere non presente nel set [-0123456789]viene considerato un delimitatore di argomenti.
Produzione
Personaggi stdoutcome descritto sopra.
Esempio
per divide(2,3,5), tutti i seguenti sono output accettabili:
0.666
0.667
.6666
.6667
0.666
0.667
.6666
.6667
+0.666
+0.667
+.6666
+.6667
Un altro esempio: per divide(371,3,5)quanto segue sono tutti gli output accettabili:
123.6
123.7
123.6
123.7
+123.6
+123.7
123.66666
123.66667
123.66666
123.66667
+123.66666
+123.66667
E per divide(371,-3,5)quanto segue sono tutti accettabili:
-123.6
-123.7
-123.66666
-123.66667
92,3,5la risposta sarebbe, ad esempio,30.67