Digit fifth powers: Difference between revisions
Content added Content deleted
(Added C++ (fast) version) |
(→{{header|C++}}: exchanged autos for ints) |
||
Line 246: | Line 246: | ||
=={{header|C++}}== |
=={{header|C++}}== |
||
Fast version. Checks numbers up to 399,999, which is above the requirement of 6 * 9<sup>5</sup> and well below the overkill value of 999,999. |
|||
Fast version. |
|||
<lang cpp>#include <iostream> |
<lang cpp>#include <iostream> |
||
#include <cmath> |
#include <cmath> |
||
Line 256: | Line 256: | ||
int nums[] = { 0,1,2,3,4,5,6,7,8,9 }, nu[] = { 0,1,2,3 }, |
int nums[] = { 0,1,2,3,4,5,6,7,8,9 }, nu[] = { 0,1,2,3 }, |
||
p5[10], t = 0; |
p5[10], t = 0; |
||
for ( |
for (int i : nums) p5[i] = pow(i, 5); |
||
for ( |
for (int i : nu) { int im = i * 100000, ip = p5[i]; |
||
for (int j : nums) { int jm = im + j * 10000, jp = ip + p5[j]; |
|||
for ( |
for (int k : nums) { int km = jm + k * 1000, kp = jp + p5[k]; |
||
for (int l : nums) { int lm = km + l * 100, lp = kp + p5[l]; |
|||
for ( |
for (int m : nums) { int mm = lm + m * 10, mp = lp + p5[m]; |
||
for (int n : nums) { int nm = mm + n; |
|||
for (auto l : nums) { |
|||
auto lm = km + l * 100, lp = kp + p5[l]; |
|||
for (auto m : nums) { |
|||
auto mm = lm + m * 10, mp =lp + p5[m]; |
|||
for (auto n : nums) { |
|||
auto nm = mm + n; |
|||
if (nm == mp + p5[n] && nm > 1) t += nm; } } } } } } |
if (nm == mp + p5[n] && nm > 1) t += nm; } } } } } } |
||
auto et = steady_clock::now(); |
auto et = steady_clock::now(); |