Hier haal ik gcc 4.7.1 ( http://www.equation.com/servlet/equation.cmd?fa=fortran )quote:Op zondag 12 augustus 2012 14:42 schreef thenxero het volgende:
[..]
Dat is misschien het beste, misschien heb ik dat in de toekomst ook nog voor andere dingen nodig. Hoe installeer die nieuwe gcc?
Bedankt. Heb dit nu gedaan. Volgens mij werkt hij goed (heb het getest op mijn eigen oude bestanden), alleen als ik de class/header van GS42 wil gebruiken dan krijg ik:quote:Op zondag 12 augustus 2012 15:39 schreef ari_zahav het volgende:
[..]
Hier haal ik gcc 4.7.1 ( http://www.equation.com/servlet/equation.cmd?fa=fortran )
En dan in Code::Blocks:
Settings -> Compiler and debugger settings
Ik copy dan meestal de oude gcc
En dan in "Toolchain executables" gooi ik de nieuwe compiler install dir erin
En vergeet niet om de nieuwe compiler profile de default te maken.
Gefixt, het werkt nuquote:Op zondag 12 augustus 2012 16:23 schreef ari_zahav het volgende:
Geen idee wat dat zou kunnen zijn. Ik zou de error even googlen als ik jou was
Moest gewoon nog een path aanpassen naar de goede compilerquote:
Je kan het ook niet zo vergelijken, want er zit ook nog allerlei code van mezelf omheen om die dingen in te lezen. Kan best zijn dat het daar vandaan komt.quote:Op zondag 12 augustus 2012 17:04 schreef t4rt4rus het volgende:
Met GMP duurt het 0.003s om op te lossen.
Ik snap de vraag niet eens want ze zeggen niet hoe je de elementen moet permuterenquote:Op zondag 12 augustus 2012 18:06 schreef t4rt4rus het volgende:
Nu opdracht 24 doen zonder programmeren, moet lukken.
edit:
het werkt niet echt...
a b c d e f g h i j
10! mogelijkheden om dit te sorteren
Als plek 1 vast staat zijn er nog 9! mogelijkheden om te sorteren, etc.
De miljoenste permutatie is dan
k * 3628800 + l * 362880 + m * 40320 + n * 5040 + o * 720 + p * 120 + q * 24 + r * 6 + s * 2 + t * 1
waarin k het k'ste element is uit de gesorteerde set van getallen 10 getallen;
waarin l het l'ste element is uit de gesorteerde set van de overgebleven 9 getallen;
etc.
Of heb ik dit fout?
Staat er toch gewoon?quote:Op zondag 12 augustus 2012 18:57 schreef thenxero het volgende:
[..]
Ik snap de vraag niet eens want ze zeggen niet hoe je de elementen moet permuteren
quote:If all of the permutations are listed numerically or alphabetically, we call it lexicographic order.
What is the millionth lexicographic permutation of the digits 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9?
Na wat gegoogle begrijp ik dat je ze moet sorteren op grootte, maar dat haal ik niet echt uit de vraagquote:
Het staat er gewoon...quote:Op zondag 12 augustus 2012 19:03 schreef thenxero het volgende:
[..]
Na wat gegoogle begrijp ik dat je ze moet sorteren op grootte, maar dat haal ik niet echt uit de vraag
edit:quote:If all of the permutations are listed numerically or alphabetically, we call it lexicographic order.
quote:The lexicographic permutations of 0, 1 and 2 are:
012 021 102 120 201 210
Ja, list numerically lees ik gewoon als numerieke waarden in een lijst zetten. Maar dat kan ook aan mij liggen.quote:Op zondag 12 augustus 2012 19:33 schreef t4rt4rus het volgende:
[..]
Het staat er gewoon...
[..]
edit:
En zelf nog een voorbeeld
[..]
quote:Op zondag 12 augustus 2012 18:06 schreef t4rt4rus het volgende:
Nu opdracht 24 doen zonder programmeren, moet lukken.
edit:
het werkt niet echt...
a b c d e f g h i j
10! mogelijkheden om dit te sorteren
Als plek 1 vast staat zijn er nog 9! mogelijkheden om te sorteren, etc.
De miljoenste permutatie is dan
k * 10! + l * 9! + m * 8! + n * 7! + o * 6! + p * 5! + q * 4! + r * 3! + s * 2! + t * 1!
waarin k het k'ste element is uit de gesorteerde set van getallen 10 getallen;
waarin l het l'ste element is uit de gesorteerde set van de overgebleven 9 getallen;
etc.
Of heb ik dit fout?
Nee list numerically is numeriek sorteren dus op grootte.quote:Op zondag 12 augustus 2012 19:43 schreef thenxero het volgende:
[..]
Ja, list numerically lees ik gewoon als numerieke waarden in een lijst zetten. Maar dat kan ook aan mij liggen.
Je kan wel eens gelijk hebben jaquote:
Volgens mij klopt dat wel
Je idee klopt wel maar volgens mij moet je met 9! beginnen... dus k * 9! + ... etc
1 | 1M = k*9! + l*8! + m*7! + n*6! + o*5! + p*4! + q*3! + r*2! + s*1! |
1 | 1M = 2*9! + 6*8! + 6*7! + 2*6! + 5*5! + 1*4! + 2*3! + 2*2! + 0*1! |
1 | 999999 = k*9! + l*8! + m*7! + n*6! + o*5! + p*4! + q*3! + r*2! + s*1! |
Ik zag het ja. Omdat je niet het aantal permutaties telt, maar het aantal keer dat je de originele permutatie gepermuteerd hebt. Samen met mijn vorige opmerking kom je goed uit.quote:Op zondag 12 augustus 2012 20:49 schreef t4rt4rus het volgende:
wacht eens even,
0 is de eerste permutatie...
Dus we moeten dit oplossen:
[ code verwijderd ]
En dan kom je wel op de goede uit.
We tellen wel het aantal permutatiesquote:Op zondag 12 augustus 2012 20:54 schreef thenxero het volgende:
[..]
Ik zag het ja. Omdat je niet het aantal permutaties telt, maar het aantal keer dat je de originele permutatie gepermuteerd hebt. Samen met mijn vorige opmerking kom je goed uit.
Ha, dank je. Natuurlijk was het ook niet overdreven moeilijk om verbeteringen aan te brengen.quote:Op zondag 12 augustus 2012 15:31 schreef t4rt4rus het volgende:
w00t OP is al een stuk beter, goed gedaan GS42!
Ik kijk later zelf wel even wat we kunnen toevoegen.
Daar kan je best gelijk in hebben. Ik moest kiezen tussen snelle in- en output of snel rekenen. Hier heb ik dus voor gekozen.quote:Op zondag 12 augustus 2012 17:01 schreef thenxero het volgende:
PE 13 eindelijk opgelost. Vreemd genoeg duurde het 1sec om één Unlimited Int te lezen en te printen, dus ik had niet veel vertrouwen in de snelheid. Maar die 50 getallen bij elkaar optellen ging ook in ongeveer 1 sec, dus dat viel wel mee
Ik heb ook geen schijn van kans tegen GMP.quote:Op zondag 12 augustus 2012 17:04 schreef t4rt4rus het volgende:
Met GMP duurt het 0.003s om op te lossen.
Als je dat in C++ wilt doen, gaat dat trouwens heel mooi met std::next_permuation. Die produceert permutaties in oplopende volgorde. Opgave 24 kan je zo in 3 (korte) regels code doen.quote:Op zondag 12 augustus 2012 19:03 schreef thenxero het volgende:
Na wat gegoogle begrijp ik dat je ze moet sorteren op grootte, maar dat haal ik niet echt uit de vraag
Blij dat het nu goed werkt. Dit is precies het soort doel dat ik voor ogen had: grote getallen en gebruiksgemak waar geen extreme snelheid nodig is. Dank je wel voor het testen.quote:Op zondag 12 augustus 2012 21:23 schreef thenxero het volgende:
Precies. Heb nu ook met de class van GS42 opgave 20 opgelost. In 0.2 seconde dus ik vind die klasse erg goed werken.
Ja, erg bedankt voor deze gebruiksvriendelijke classquote:Op zondag 12 augustus 2012 23:40 schreef GS42 het volgende:
Blij dat het nu goed werkt. Dit is precies het soort doel dat ik voor ogen had: grote getallen en gebruiksgemak waar geen extreme snelheid nodig is. Dank je wel voor het testen.
SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
1 | Unlimited::Int k("10000000"); |
Ik krijg vreemd genoeg geen compiler waarschuwing. Als naïeve newb dacht ik dat je bij Unlimited::int een ongelimiteerde integer kon initialiseren. Bedankt!quote:Op maandag 13 augustus 2012 00:45 schreef GS42 het volgende:
Hierboven staat zowel de oorzaak als de oplossing.C++ kan niet zulke grote getallen verwerken (vandaar de problemen om met grote getallen te rekenen) en daarom moeten zulke getallen in string-vorm aangeleverd worden.
[ code verwijderd ]
Initialiseert k vanuit een string.
Trouwens: je zou ook een compiler-waarschuwing moeten krijgen als je jouw code probeert te compileren. Iets als "integer constant too large for its type" ofzo. Een compiler-waarschuwing is vrijwel altijd een waarschuwing dat er iets niet helemaal klopt in de code en moet dus weggewerkt worden.
Morgen Vandaag ben ik hopelijk ook zo ver.quote:Op maandag 13 augustus 2012 02:44 schreef kutkloon7 het volgende:
tvp voor ProjectEuler. Ik heb de eerste 26 al/opschepmodus
Gebruik `-Wall -Wextra'.quote:Op maandag 13 augustus 2012 01:27 schreef thenxero het volgende:
[..]
Ik krijg vreemd genoeg geen compiler waarschuwing. Als naïeve newb dacht ik dat je bij Unlimited::int een ongelimiteerde integer kon initialiseren. Bedankt!
Opzich geen rare gedachte.quote:Op maandag 13 augustus 2012 01:27 schreef thenxero het volgende:
Als naïeve newb dacht ik dat je bij Unlimited::int een ongelimiteerde integer kon initialiseren. Bedankt!
Ik heb het trouwens opgelost door het te initialiseren als een klein getal, en dan met een loop steeds keer 10 doen totdat je genoeg nullen hebt. Dat werkt wel gewoon.quote:Op maandag 13 augustus 2012 12:20 schreef GS42 het volgende:
[..]
Opzich geen rare gedachte.Goede tip, ik zal het wel ergens in de documentatie opnemen.
Ook een prima oplossing natuurlijk. Iets als Int x(10); x.pow(999); geeft je ook het juiste getal.quote:Op maandag 13 augustus 2012 13:19 schreef thenxero het volgende:
Ik heb het trouwens opgelost door het te initialiseren als een klein getal, en dan met een loop steeds keer 10 doen totdat je genoeg nullen hebt. Dat werkt wel gewoon.
Goed idee, ik zie dat je dat inmiddels al gedaan hebtquote:Op maandag 13 augustus 2012 03:00 schreef thenxero het volgende:
[..]
Morgen Vandaag ben ik hopelijk ook zo ver.
Misschien moeten we maar een apart PE draadje maken(?)
1 2 3 4 5 6 7 | int a,b,c; a=1; b=2; c=b; b=a; a=c; |
Die truc die jij postte of die const?quote:Op donderdag 16 augustus 2012 21:43 schreef thabit het volgende:
Dit soort truuks lijken me niet hetgene om wakker van te liggen overigens. Vaak zitten ze al in std geoptimaliseerd, en anders wordt je code er alleen maar onleesbaarder van.
Ik doelde op de truc die ik zelf postte; const is wel goed om aan te leren.quote:Op donderdag 16 augustus 2012 22:09 schreef thenxero het volgende:
[..]
Die truc die jij postte of die const?
Nog een andere vraag trouwens: hoe kan je het beste goede random getallen produceren in C++? De snelheid van de methode is ook erg belangrijk. Met srand en rand krijg ik getallen die niet zo random lijken.
/dev/random ...quote:Op donderdag 16 augustus 2012 22:09 schreef thenxero het volgende:
[..]
Die truc die jij postte of die const?
Nog een andere vraag trouwens: hoe kan je het beste goede random getallen produceren in C++? De snelheid van de methode is ook erg belangrijk. Met srand en rand krijg ik getallen die niet zo random lijken.
xchg rax, rbxquote:Op donderdag 16 augustus 2012 20:54 schreef thenxero het volgende:
Is er een handige manier om twee waardes om te wisselen in C++ zonder dat je een derde variable aanmaakt? Bijvoorbeeld: Stel dat a=1, en b=2. Dan wil ik dat a=2 en b=1. Nu zou ik dat doen met zoiets als:
[ code verwijderd ]
Maar dan heb je dus extra geheugen nodig voor die c, en ik vroeg me dus af of dat ook beter kan.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |