Toon posts:

[Alg] Een deelsom met 5000 decimalen

Pagina: 1
Acties:
  • 117 views sinds 30-01-2008

Verwijderd

Topicstarter
Omdat ik we van interesante wiskundige uitdagingen hou ben ik daar voortdurend naar op zoek. Maar nu heb ik wel een hele bijzondere gevonden. Het is eigenlijk een programmeeropdracht, maar ik vind eigenlijk dat hij meer bij wetenschap past, als ie niet goed staat moet een mod het maar verplaatsen. Het gaat om het volgende:
Calculate this < 13155187 / 13417 > for 5000 numbers after the comma.
The solution are the final 6 numbers (from 5000)
Nu krijg ik maar 7 cijfers achter de komma, als ik het op mn rekenmachine doe(en dat komt niet omdat hij niet meer aankan!) En toch staat de opdracht er en hij is op te lossen. Ik zeg er nog maals bij dat je het moet programmeren en niet gaan uitschrijven, maar er is geen variabele(voor zover ik weet) Dat zon groot getal aankan(zoveel decimalen).
Heeft iemand misshien een idee hoe ik dit aan kan pakken |:(

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 22:34

Reptile209

- gers -

Er bestaan libraries die voor enorme getallen intern met strings werken. En die zou je ook zelf kunnen schrijven... :) 't Is wel rotwerk, want elke operatie mag je dus decimaal voor decimaal gaan uitwerken.
offtopic:
TR voor move naar P&W

[ Voor 3% gewijzigd door Reptile209 op 12-10-2003 11:09 ]

Zo scherp als een voetbal!


  • Eelke Spaak
  • Registratie: Juni 2001
  • Laatst online: 16-08 19:14

Eelke Spaak

- Vlad -

In Java gebruik je bijvoorbeeld de BigDecimal.
offtopic:
Idd, move naar P&W is gewenst.

[ Voor 31% gewijzigd door Eelke Spaak op 12-10-2003 11:14 ]

TheStreme - Share anything with anyone


  • _the_crow_
  • Registratie: September 2000
  • Laatst online: 30-03-2025

_the_crow_

Rare vogel

Ik denk dat het zo kan.
Stel je hebt 95/8 (even simpel voorbeeld).
Je deelt en doet het restant maal 10 en dan deel je weer door de deler (8 in dit geval). Net zolang tot je óf genoeg decimalen hebt óf dat je als restant 0 overhoudt. In het laatste geval zijn er niet meer decimalen.

95/8=11 (7 over) < 11=hele getal
7*10=70
70/8=8 (6 over) < 8=eerste decimaal
6*10=60
60/8=7 (4 over) < 7=tweede decimaal
4*10=40
40/8=5 (0 over) < 5=derde decimaal

Dus 95/8=11,875 :)

Hmm...dat was dus niet echt de vraag zie ik nu. |:( Maar goed. Verder ^ ^ zie boven mij. :)

[ Voor 46% gewijzigd door _the_crow_ op 12-10-2003 11:31 ]

Schrödingers cat: In this case there are three determinate states the cat could be in: these being Alive, Dead, and Bloody Furious.


Verwijderd

Topicstarter
Vladimir G. schreef op 12 oktober 2003 @ 11:13:
In Java gebruik je bijvoorbeeld de BigDecimal.
offtopic:
Idd, move naar P&W is gewenst.
en hoeveel decimalen kan BigDecimal aan?

@Reptile209 En hoe werken dat soort liaberies? En hoe kan je er een zelf schrijven :Y)

[ Voor 17% gewijzigd door Verwijderd op 12-10-2003 11:44 ]


Verwijderd

mja, het idee van een dergelijke opdracht lijkt mij het schrijven van een delingsalgorithme, niet het opzoeken van een of ander programma dat dat al kan :P

Ik zou zelf simpelweg een algorithme schrijven dat een staartdeling uitvoert. Lijkt me geen enkel probleem, dat kan ik zelfs :) Je hoeft de getallen die je niet gebruikt in de uitkomst niet eens op te slaan, met het antwoord doe je niks meer tenslotte. Ik zou alleen de decimalen 4995 tot en met 5000 opslaan of weergeven. het getal waarop je werkt in de staartdeling kan je simpelweg behandelen als x*10^-y, aangezien x nooit veel meer dan 6 decimalen zal bevatten.

Verder is dit meer iets voor P&W

[ Voor 61% gewijzigd door Verwijderd op 12-10-2003 12:23 ]


  • burne
  • Registratie: Maart 2000
  • Niet online

burne

Mine! Waah!

Wat je zoekt heet "APM" en staat voor Arbitrary Precision Math. Da's een library die dit soort dingen kan en doet.

Onder de meeste linux-distro's heb je bc, en dat maakt gehakt van je rekensommetje. De source-code van bc eens doorkijken? Anders zul je 'Numerical Recipies' van Knuth uit de bieb moeten halen. Maar dat wens ik niemand toe.

I don't like facts. They have a liberal bias.


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Een type die dit dus wel aankan is een array van karakters :)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Chieliot
  • Registratie: September 2001
  • Laatst online: 04-12-2025
Voor dit soort berekeningen moet je een functionele programmeertaal zoals Scheme gebruiken, die rekent met de mogelijke hardware door tot het einde en output het naar het scherm. Dit met een enkele regel.

AMD XP1800+, 512MB Intern, Maxtor 160Gig, Matrox G550 32 DDR Dual Head in een Chieftec DX-01-SLD


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Burne schreef op 12 October 2003 @ 12:27:
Wat je zoekt heet "APM" en staat voor Arbitrary Precision Math. Da's een library die dit soort dingen kan en doet.
Lees je de andere reacties wel eens ?
Verwijderd schreef op 12 October 2003 @ 12:18:
mja, het idee van een dergelijke opdracht lijkt mij het schrijven van een delingsalgorithme, niet het opzoeken van een of ander programma dat dat al kan :P
Nah Burne, laten we dat maar niet doen he? Alleen op de start post letten, niet letten op wat er al gezegd is.

Dit is overduidelijk een opdracht voor een school, met afkijken hoe het moet leer je hoe je iets kan namaken. Als jij zo hebt leren programmeren zal je wel een kei zijn om zelf oplossingen te bedenken.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

installeer de bc-calculator op je linuxdoos ofzo en reken het daarmee uit...
Btw: [rml][ php] tot 5000 cijfers achter de komma[/rml]

't Kwam me al zo bekent voor...

[ Voor 40% gewijzigd door ACM op 12-10-2003 12:39 ]


  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

ACM schreef op 12 October 2003 @ 12:37:
installeer de bc-calculator op je linuxdoos ofzo en reken het daarmee uit...
Btw: [rml][ php] tot 5000 cijfers achter de komma[/rml]

't Kwam me al zo bekent voor...
Dat kan ja, en ik kan je het antwoord al vertellen ;)

Maar dit is natuurlijk niet bepaald voldoen aan een programmeeropdracht ;)

All my posts are provided as-is. They come with NO WARRANTY at all.


  • Thund3r|IA
  • Registratie: November 2000
  • Laatst online: 11-07-2025
Ik ben ff snel met QBasic bezig geweest en heb er een progje voor geschreven. Ik weet niet of het ook goed werkt want mijn rekenmachine kan ook geen 5000 getallen aan :)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
DIM helegetal AS LONG, deelgetal AS LONG, aantalcijfers AS INTEGER
DIM resultaat AS STRING, decimalen AS LONG
helegetal = 13155187: deelgetal = 13417: aantalcijfers = 5000
resultaat = ""
CLS
decimalen = aantalcijfers
WHILE (decimalen >= 0)
resultaat = resultaat + RTRIM$(LTRIM$(STR$(FIX(helegetal / deelgetal))))
IF decimalen = aantalcijfers THEN resultaat = resultaat + "."
helegetal = (helegetal MOD deelgetal) * 10
decimalen = decimalen - 1
WEND
PRINT resultaat

  • Doogie
  • Registratie: Januari 2002
  • Niet online
antwoord: 807856

Gevonden met maple (soort GR met ballen :)), afronden op 5000 getallen decimaal

Met het programmeren kan ik je niet verder helpen :(

  • _the_crow_
  • Registratie: September 2000
  • Laatst online: 30-03-2025

_the_crow_

Rare vogel

Als ik de volgende zelfgeschreven code execute:
C++:
1
2
3
4
5
6
7
8
   int modulo;
   modulo=13155187%13417;  // Bereken restant van 13155187/13417
   for(i=1; i<=5000; i++){      // 5000 decimalen
     modulo*=10;    // vermenigvuldig modulo met 10
     cout << (int)modulo/13417; // Schrijf een decimaal op het scherm
     modulo%=13417; // bereken het restant van de vorige deling
   }
   return 0;

...dan kom ik tot de volgende 6 getallen aan het einde: 855705. :)
Dus waar em dat verschil in zit met jou Doogie. :?

[ Voor 16% gewijzigd door _the_crow_ op 12-10-2003 17:45 ]

Schrödingers cat: In this case there are three determinate states the cat could be in: these being Alive, Dead, and Bloody Furious.


  • darkdesign
  • Registratie: Augustus 2003
  • Niet online
_the_crow_ schreef op 12 oktober 2003 @ 17:30:
Als ik de volgende zelfgeschreven code execute:
C++:
1
2
3
4
5
6
7
8
   int modulo;
   modulo=13155187%13417;  // Bereken restant van 13155187/13417
   for(i=1; i<=5000; i++){      // 5000 decimalen
     modulo*=10;    // vermenigvuldig modulo met 10
     cout << (int)modulo/13417; // Schrijf een decimaal op het scherm
     modulo%=13417; // bereken het restant van de vorige deling
   }
   return 0;

...dan kom ik tot de volgende 6 getallen aan het einde: 855705. :)
Dus waar em dat verschil in zit met jou Doogie. :?
hoe kan ik die code werkende krijgen? want aan taxt kan ik nix mee

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Compileren met een C++ compiler.

https://fgheysels.github.io/


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 20-08 00:10
Doogie schreef op 12 October 2003 @ 16:24:
antwoord: 807856

Gevonden met maple (soort GR met ballen :)), afronden op 5000 getallen decimaal
Met bc kom ik (ook) op 855705 uit; ik weet niet wat je in Maple intypt, maar het gaat ergens fout. :)
BC:
1
2
3
4
5
6
scale=5000
13155187/13417
980.4864723857792352985019005738987851233509726466423194454796154132\
[...]
03063277930983081165685324588208988596556607289259894164120146083327\
1223075203100544085861220839233807855705

  • Dawai
  • Registratie: December 2000
  • Laatst online: 08-07 23:56

Dawai

HERiTAGE CHESS CREW

Bij Maple moet je opletten: Digits bepaalt het maximum aantal cijfers in totaal, dus niet enkel na de komma. Daar het resultaat begint met 980 moet je Digits dus op 5003 zetten:

code:
1
2
3
4
5
> Digits:=5003;

                            Digits := 5003

> evalf(13155187/13417);

En het resultaat eindigt op 855705 _/-\o_

Om trouwens even te testen wat het maximum is dat je kan gebruiken voor Digits:

code:
1
2
3
> kernelopts(maxdigits);

                              268435448


:D

Programmer: red-eyed, mumbling mammal capable of conversing with inanimate objects.


  • Eelke Spaak
  • Registratie: Juni 2001
  • Laatst online: 16-08 19:14

Eelke Spaak

- Vlad -

Verwijderd schreef op 12 October 2003 @ 11:43:
[...]

en hoeveel decimalen kan BigDecimal aan?

@Reptile209 En hoe werken dat soort liaberies? En hoe kan je er een zelf schrijven :Y)
Nou,
A BigDecimal consists of an arbitrary precision integer unscaled value and a non-negative 32-bit integer scale, which represents the number of digits to the right of the decimal point.
Dat betekent 2^32 decimalen, oftewel 4294967296.

Zie ook de Java API docs; en navigeer dan naar java.math.BigDecimal.

TheStreme - Share anything with anyone


  • _the_crow_
  • Registratie: September 2000
  • Laatst online: 30-03-2025

_the_crow_

Rare vogel

Ik heb mijn stukje code even door de compiler heengegooid en dit is dan de gecompileerde executable. :)
Niet zeggen dat hij meteen afsluit. Dat weet ik. Er staat geen pauze aan het eind.
Dan bekijk je hem even in dos (als je Win98 hebt) of via 'uitvoeren...'->'cmd' (als je WinXP) hebt. ;)

Hier een versie waarbij de user eerst input geeft. :)

Wel even de url kopiepeesten, want de host is yahoo. :X

[ Voor 73% gewijzigd door _the_crow_ op 13-10-2003 12:32 ]

Schrödingers cat: In this case there are three determinate states the cat could be in: these being Alive, Dead, and Bloody Furious.


  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-07 21:46

Confusion

Fallen from grace

Het leukste is natuurlijk om zelf een arbitrary precision library te schrijven, maar ik denk dat het advies van Captain Proton om het bij een delingsalgoritme te houden heel verstandig is :P

Je moet er wel verdomd goed op letten dat je niet tussendoor standaard operaties gebruikt die afrondingen invoeren: je moet dus echt vanaf scratch beginnen, want gebruik van al bestaand delingsfuncties met finite precision variabelen gaat je antwoord onherroepelijk om zeep helpen.

[ Voor 43% gewijzigd door Confusion op 12-10-2003 21:29 ]

Wie trösten wir uns, die Mörder aller Mörder?


  • Doogie
  • Registratie: Januari 2002
  • Niet online
Dank je Dawai, had ik niet bij nagedacht :)

Ik had ze niet alle 5000 nageteld ;)

Verwijderd

Topicstarter
dusty schreef op 12 oktober 2003 @ 12:36:
[...]

Lees je de andere reacties wel eens ?

[...]


Dit is overduidelijk een opdracht voor een school, met afkijken hoe het moet leer je hoe je iets kan namaken. Als jij zo hebt leren programmeren zal je wel een kei zijn om zelf oplossingen te bedenken.
Dit is geen opdracht voor school, helaas krijg ik op school geen informatica, het is vrije tijd. Ik snap eigenlijk nog steeds niet hoe jullie aan zoveel deicmalenkomen, want volgens mij rekenmachine zijn er niet meer dan 8 decimalen.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18-08 21:00

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op 13 October 2003 @ 15:12:
[...]


Dit is geen opdracht voor school, helaas krijg ik op school geen informatica, het is vrije tijd. Ik snap eigenlijk nog steeds niet hoe jullie aan zoveel deicmalenkomen, want volgens mij rekenmachine zijn er niet meer dan 8 decimalen.
Omdat je rekenmachine er gewoon niet meer aan kan, of niet meer kan displayen. Mijn windows calculator (calc.exe) geeft al 10 decimalen achter de komma weer.
En ga voor de gein eens met de hand een normale staartdeling doen. Dan zit je zo over de 10 decimalen heen.

[ Voor 12% gewijzigd door Creepy op 13-10-2003 15:20 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

Creepy schreef op 13 October 2003 @ 15:19:
[...]

Omdat je rekenmachine er gewoon niet meer aan kan, of niet meer kan displayen. Mijn windows calculator (calc.exe) geeft al 10 decimalen achter de komma weer.
En ga voor de gein eens met de hand een normale staartdeling doen. Dan zit je zo over de 10 decimalen heen.
niet van die enge dingen zeggen Creep, die vaardigheden leren ze niet meer tegenwoordig....

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
hmm, vaag, met calx.exe kom krijg ik idd een heel stuk meer decimalen dan met mn GR. Terwijl die zeker wel meer aankan :S

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

Verwijderd schreef op 13 October 2003 @ 15:26:
hmm, vaag, met calx.exe kom krijg ik idd een heel stuk meer decimalen dan met mn GR. Terwijl die zeker wel meer aankan :S
beter africhten dus.
Of je GR wegsmijten en weer ouderwetsch rekenwerk doen.

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
D2k schreef op 13 oktober 2003 @ 15:28:
[...]

beter africhten dus.
Of je GR wegsmijten en weer ouderwetsch rekenwerk doen.
GoT weet alles

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18-08 21:00

Creepy

Tactical Espionage Splatterer

Net alsof wij het programeer probleem voor je geen oplossen??? Dat mag je toch echt wel zelf gaan doen.
Jammer dat het resultaat van de deling al is gegeven :/

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Sjeik
  • Registratie: Augustus 2001
  • Laatst online: 16-08 14:49
Maple 8: (alleen dan helemaal met alle 5000 cijfers achter de komma :p)
980.4864723857792352985019005738987851233509726466423194454796154132816575985689
79652679436535738242528135946932995453529104866959827085041365431914735037638816
42692107028396810017142431243944249832302303048371469031825296265931281210404710
44197659685473652828501155250801222329880002981292390251173883878661399716777222
92613848103152716702690616382201684430200491913244391443690839979130953268241782
81284937020198255943951703063277930983081165685324588208988596556607289259894164
12014608332712230752031005440858612208392338078557054483118431840202727882537079
82410374897518074085115897741671014384735782961913989714541253633450100618618170
97711858090482224044123127375717373481404188715808302899306849519266602071998211
22456584929566967280316016993366624431691138108369978385630170678989341879704852
05336513378549601252142803905493031229037787881046433628978162033241410151300588
80524707460684206603562644406350152791235000372661548781396735484832674964597152
86576731012894089587836327047775210553775061489155548930461354997391369158530222
85160617127524781992993962882909741372885145710665573526123574569575911157486770
51501826041589028844003875680107326526049042259819631810389803980025340985317134
97801296862189759260639487217708876798091972870239248714317656704181262577327271
37213982261310278005515390921964671685175523589476037862413356189908325258999776
40307073116195870910039502124170828053961392263546247298203771334873667734963106
50667064172318700156517850488186628903629723485130804203622270254155176268912573
60065588432585525825445330550793769098904375046582693597674591935604084370574644
10822091376611761198479540880971901319221882686144443616307669374673921144816277
85645077140940597749124245360363717671610643213833196690765446821196988894685846
31437728255198628605500484460013415815756130282477453976298725497503167623164641
87225162107773719907579935902213609599761496608779906089289707088022657822165908
92151747782663784750689423865245583960646940448684504732801669523738540657374972
05038384139524483863754937765521353506745174032943280912275471416859208466870388
31333383021539837519564731311023328612953715435641350525452783781769397033614071
70008198554073190728180666318849221137363046880822836699709323991950510546321830
51352761422076470149809942610121487664902735335768055452038458671834240143102034
73205634642617574718640530670045464708951330401729149586345680852649623611835730
78929716031899828575687560557501676976969516285309681747037340687187895952895580
23403145263471714988447491987776701199970187076097488261161213386002832227770738
61518968472832973093836177983155697995080867556085563091600208690467317582171871
50629798017440560482969367220690169188343146754117910114034433927107401058358798
53916672877692479689945591413877916076619214429455168815681597972721174629201758
96251024819259148841022583289856152642170380860102854587463665498993813818290228
81419095177759558768726242826265185958112841916971006931504807333979280017887754
34150704330327196839830066333755683088618916300216143698293210106581202951479466
34866214503987478571960945069687709622121189535663710218379667585898486994111947
52925393157933964373555936498472087649996273384512186032645151673250354028471342
32689871059104121636729522247894462249385108444510695386450026086308414697771483
93828724752180070060371170902586271148542893344264738764254304240888425132294849
81739584109711559961243198926734739509577401803681896101960199746590146828650219
87031378102407393605127822911232019080271297607512856823432958187374226727286278
60177386897219944846090780353283148244764105239621375866438100916747410002235969
29268838041290899604978758291719460386077364537527017962286651263322650368934933
29358276812998434821495118133710963702765148691957963777297458448237310874263993
44115674144741745546694492062309010956249534173064023254080643959156294253558917
79086233882388015204591190280986807781173138555563836923306253260788551837221435
49228590594022508757546396362823283893567861668033092345531788030111053141536856
22717448013713944995155399865841842438697175225460237012745024968323768353581277
48378922262800924200640977863904002385033912200939107102929119773421778340910784
82522173362152493105761347544160393530595513154952671983304762614593426250279496
16158604755161362450622344786464932548259670567190877245285831407915331296116866
66169784601624804352686889766713870462845643586494745472162182306029663859282999
18014459268092718193336811507788626369531191771633002906760080494894536781694864
72385779235298501900573898785123350972646642319445479615413281657598568979652679
43653573824252813594693299545352910486695982708504136543191473503763881642692107
02839681001714243124394424983230230304837146903182529626593128121040471044197659
68547365282850115525080122232988000298129239025117388387866139971677722292613848
10315271670269061638220168443020049191324439144369083997913095326824178281284937
02019825594395170306327793098308116568532458820898859655660728925989416412014608
33271223075203100544085861220839233807855705

Was ik maar rijk en niet zo knap...


Verwijderd

Het kan ook gewoon in excel, zonder vb of macro's. Het antwoord is volgens mij dus 855705.
Hoe doe je dat. Je bouwt een staartdeling na.
Kolom 1 zet je je deelgetal(A!), kolom 2 doe je het restgetal(B), kolom 3 zet je de deling (C), kolom 4 zet je de afgeronde deling (D).
1e regel,B/A. Antwoord is C. Bereken ook D
2e regel. B2=(B1-(A!*D1))*10. Bereken nu ook automatisch C2 en D2.
En dat doe je 5001 regels naar beneden.

  • Coltrui
  • Registratie: Maart 2001
  • Niet online

Coltrui

iddqd

Verwijderd schreef op 13 October 2003 @ 15:12:
[...]


Dit is geen opdracht voor school, helaas krijg ik op school geen informatica, het is vrije tijd. Ik snap eigenlijk nog steeds niet hoe jullie aan zoveel deicmalenkomen, want volgens mij rekenmachine zijn er niet meer dan 8 decimalen.
Hij kwam me al bekend voor.. Is een challenge op http://www.net-force.nl/ :)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21-08 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

ja, en jij hebt blijkbaar geen enkel verstand van het probleem dat je is voorgelegd, en je lijkt ook niet echt moeite te doen om dat probleem wel te doorgronden. Heb je zelf al iets gedaan? Er zijn namelijk zat tips voorbij gekomen.

Je hebt je antwoord al, jammer genoeg, dus ik gooi 'm op slot, want echt veel moeite lijk je er niet voor te willen doen

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1

Dit topic is gesloten.