Problem 8
Find the greatest product of five consecutive digits in the 1000-digit number.
73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450
Solution in C#
using System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string s = "73167176531330624919225119674426574742355349194934" + "96983520312774506326239578318016984801869478851843" + "85861560789112949495459501737958331952853208805511" + "12540698747158523863050715693290963295227443043557" + "66896648950445244523161731856403098711121722383113" + "62229893423380308135336276614282806444486645238749" + "30358907296290491560440772390713810515859307960866" + "70172427121883998797908792274921901699720888093776" + "65727333001053367881220235421809751254540594752243" + "52584907711670556013604839586446706324415722155397" + "53697817977846174064955149290862569321978468622482" + "83972241375657056057490261407972968652414535100474" + "82166370484403199890008895243450658541227588666881" + "16427171479924442928230863465674813919123162824586" + "17866458359124566529476545682848912883142607690042" + "24219022671055626321111109370544217506941658960408" + "07198403850962455444362981230987879927244284909188" + "84580156166097919133875499200524063689912560717606" + "05886116467109405077541002256983155200055935729725" + "71636269561882670428252483600823257530420752963450"; var d = new int[s.Length]; for (int i = 0; i < s.Length; i++) { d[i] = Convert.ToInt32(s[i]-'0'); } int to = s.Length - 5; int max = 0; for (int i = 0; i <= to; i++) { int p = d[i] * d[i + 1] * d[i + 2] * d[i + 3] * d[i + 4]; if (p > max) max = p; } Console.WriteLine(max); Console.ReadKey(); } } }
Perl
sub problem8 {
my $num = "73167176531330624919225119674426574742355349194934" .
"96983520312774506326239578318016984801869478851843" .
"85861560789112949495459501737958331952853208805511" .
"12540698747158523863050715693290963295227443043557" .
"66896648950445244523161731856403098711121722383113" .
"62229893423380308135336276614282806444486645238749" .
"30358907296290491560440772390713810515859307960866" .
"70172427121883998797908792274921901699720888093776" .
"65727333001053367881220235421809751254540594752243" .
"52584907711670556013604839586446706324415722155397" .
"53697817977846174064955149290862569321978468622482" .
"83972241375657056057490261407972968652414535100474" .
"82166370484403199890008895243450658541227588666881" .
"16427171479924442928230863465674813919123162824586" .
"17866458359124566529476545682848912883142607690042" .
"24219022671055626321111109370544217506941658960408" .
"07198403850962455444362981230987879927244284909188" .
"84580156166097919133875499200524063689912560717606" .
"05886116467109405077541002256983155200055935729725" .
"71636269561882670428252483600823257530420752963450";
my @nl = map { substr($num, $_ , 1) } (0 .. length($num));
print max( map { $nl[$_] * $nl[$_ + 1] * $nl[$_+ 2] * $nl[$_ + 3] * $nl[$_ + 4] } (0 .. length($num) - 5));
}
problem8();
# 2$n = "73167176531330624919225119674426574742355349194934" ."96983520312774506326239578318016984801869478851843" ."85861560789112949495459501737958331952853208805511" ."12540698747158523863050715693290963295227443043557" ."66896648950445244523161731856403098711121722383113" ."62229893423380308135336276614282806444486645238749" ."30358907296290491560440772390713810515859307960866" ."70172427121883998797908792274921901699720888093776" ."65727333001053367881220235421809751254540594752243" ."52584907711670556013604839586446706324415722155397" ."53697817977846174064955149290862569321978468622482" ."83972241375657056057490261407972968652414535100474" ."82166370484403199890008895243450658541227588666881" ."16427171479924442928230863465674813919123162824586" ."17866458359124566529476545682848912883142607690042" ."24219022671055626321111109370544217506941658960408" ."07198403850962455444362981230987879927244284909188" ."84580156166097919133875499200524063689912560717606" ."05886116467109405077541002256983155200055935729725" ."71636269561882670428252483600823257530420752963450";
$maxP=0;
for (0..length($n)) {
my $p=substr($n,$_,1)*substr($n,$_+1,1)*substr($n,$_+2,1)*substr($n,$_+3,1)*substr($n,$_+4,1);
$maxP = $p if ($p > $maxP);}
print $maxP;
Python
def problem8():
num = "73167176531330624919225119674426574742355349194934\
96983520312774506326239578318016984801869478851843\
85861560789112949495459501737958331952853208805511\
12540698747158523863050715693290963295227443043557\
66896648950445244523161731856403098711121722383113\
62229893423380308135336276614282806444486645238749\
30358907296290491560440772390713810515859307960866\
70172427121883998797908792274921901699720888093776\
65727333001053367881220235421809751254540594752243\
52584907711670556013604839586446706324415722155397\
53697817977846174064955149290862569321978468622482\
83972241375657056057490261407972968652414535100474\
82166370484403199890008895243450658541227588666881\
16427171479924442928230863465674813919123162824586\
17866458359124566529476545682848912883142607690042\
24219022671055626321111109370544217506941658960408\
07198403850962455444362981230987879927244284909188\
84580156166097919133875499200524063689912560717606\
05886116467109405077541002256983155200055935729725\
71636269561882670428252483600823257530420752963450"
nl = [int(c) for c in num ]
print max(nl[i] * nl[i + 1] * nl[i + 2] * nl[i + 3] * nl[i + 4] for i in xrange(0, len(num) - 5))
problem8()
Go
func problem8() {
s := "73167176531330624919225119674426574742355349194934" +
"96983520312774506326239578318016984801869478851843" +
"85861560789112949495459501737958331952853208805511" +
"12540698747158523863050715693290963295227443043557" +
"66896648950445244523161731856403098711121722383113" +
"62229893423380308135336276614282806444486645238749" +
"30358907296290491560440772390713810515859307960866" +
"70172427121883998797908792274921901699720888093776" +
"65727333001053367881220235421809751254540594752243" +
"52584907711670556013604839586446706324415722155397" +
"53697817977846174064955149290862569321978468622482" +
"83972241375657056057490261407972968652414535100474" +
"82166370484403199890008895243450658541227588666881" +
"16427171479924442928230863465674813919123162824586" +
"17866458359124566529476545682848912883142607690042" +
"24219022671055626321111109370544217506941658960408" +
"07198403850962455444362981230987879927244284909188" +
"84580156166097919133875499200524063689912560717606" +
"05886116467109405077541002256983155200055935729725" +
"71636269561882670428252483600823257530420752963450"
d := make([]int, len(s))
for i := 0; i < len(s); i++ {
d[i] = int(s[i] - '0')
}
to := len(s) - 5
max := 0
for i := 0; i <= to; i++ {
p := d[i] * d[i+1] * d[i+2] * d[i+3] * d[i+4]
if p > max {
max = p
}
}
fmt.Println(max)
}
func main() {
problem8()
}
C++
void problem8() {
string s = "73167176531330624919225119674426574742355349194934"
"96983520312774506326239578318016984801869478851843"
"85861560789112949495459501737958331952853208805511"
"12540698747158523863050715693290963295227443043557"
"66896648950445244523161731856403098711121722383113"
"62229893423380308135336276614282806444486645238749"
"30358907296290491560440772390713810515859307960866"
"70172427121883998797908792274921901699720888093776"
"65727333001053367881220235421809751254540594752243"
"52584907711670556013604839586446706324415722155397"
"53697817977846174064955149290862569321978468622482"
"83972241375657056057490261407972968652414535100474"
"82166370484403199890008895243450658541227588666881"
"16427171479924442928230863465674813919123162824586"
"17866458359124566529476545682848912883142607690042"
"24219022671055626321111109370544217506941658960408"
"07198403850962455444362981230987879927244284909188"
"84580156166097919133875499200524063689912560717606"
"05886116467109405077541002256983155200055935729725"
"71636269561882670428252483600823257530420752963450";
vector<int> d(s.size());
for (unsigned int i = 0; i < s.size(); i++) {
d[i] = s[i]-'0';
}
int to = s.size() - 5;
int max = 0;
for (int i = 0; i <= to; i++) {
int p = d[i] * d[i + 1] * d[i + 2] * d[i + 3] * d[i + 4];
if (p > max) max = p;
}
cout << max;
}
Bash
function problem8 {
s=73167176531330624919225119674426574742355349194934\
96983520312774506326239578318016984801869478851843\
85861560789112949495459501737958331952853208805511\
12540698747158523863050715693290963295227443043557\
66896648950445244523161731856403098711121722383113\
62229893423380308135336276614282806444486645238749\
30358907296290491560440772390713810515859307960866\
70172427121883998797908792274921901699720888093776\
65727333001053367881220235421809751254540594752243\
52584907711670556013604839586446706324415722155397\
53697817977846174064955149290862569321978468622482\
83972241375657056057490261407972968652414535100474\
82166370484403199890008895243450658541227588666881\
16427171479924442928230863465674813919123162824586\
17866458359124566529476545682848912883142607690042\
24219022671055626321111109370544217506941658960408\
07198403850962455444362981230987879927244284909188\
84580156166097919133875499200524063689912560717606\
05886116467109405077541002256983155200055935729725\
71636269561882670428252483600823257530420752963450
local to=$((${#s} - 5))
local max=0
local i
echo $i
for ((i=0; i<=to; i++)); do
local p=$((${s:i:1} * ${s:i+1:1} * ${s:i+2:1} * ${s:i+3:1} * ${s:i+4:1}))
if ((p>max)); then max=$p; fi
done
echo $max
}
problem8
Javascript
var s = "73167176531330624919225119674426574742355349194934" +
"96983520312774506326239578318016984801869478851843" +
"85861560789112949495459501737958331952853208805511" +
"12540698747158523863050715693290963295227443043557" +
"66896648950445244523161731856403098711121722383113" +
"62229893423380308135336276614282806444486645238749" +
"30358907296290491560440772390713810515859307960866" +
"70172427121883998797908792274921901699720888093776" +
"65727333001053367881220235421809751254540594752243" +
"52584907711670556013604839586446706324415722155397" +
"53697817977846174064955149290862569321978468622482" +
"83972241375657056057490261407972968652414535100474" +
"82166370484403199890008895243450658541227588666881" +
"16427171479924442928230863465674813919123162824586" +
"17866458359124566529476545682848912883142607690042" +
"24219022671055626321111109370544217506941658960408" +
"07198403850962455444362981230987879927244284909188" +
"84580156166097919133875499200524063689912560717606" +
"05886116467109405077541002256983155200055935729725" +
"71636269561882670428252483600823257530420752963450";
var d = new Array(s.length);
for (var i = 0; i < s.length; i++) {
d[i] = s[i]-'0';
}
var to = s.length - 5;
var max = 0;
for (var i = 0; i <= to; i++) {
var p = d[i] * d[i + 1] * d[i + 2] * d[i + 3] * d[i + 4];
if (p > max) max = p;
}
max;
Racket
#lang racket
(define (digit str pos)
(string->number (substring str pos (add1 pos))))
(define (problem8)
(define n "7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450")
(define p 0)
(for ([i (in-range 0 (- (string-length n) 4))])
(set! p (max p (* (digit n i)
(digit n (+ 1 i))
(digit n (+ 2 i))
(digit n (+ 3 i))
(digit n (+ 4 i))))))
(display p))
(problem8)
'Project Euler' 카테고리의 다른 글
Project Euler Problem 10 (0) | 2012.05.28 |
---|---|
Project Euler Problem 9 (0) | 2012.05.28 |
Project Euler Problem 7 (0) | 2012.05.28 |
Project Euler Problem 6 (0) | 2012.05.28 |
Project Euler Problem 5 (0) | 2012.05.28 |