Digit fifth powers: Difference between revisions

m
→‎{{header|C++}}: performance enhancement
(→‎{{header|Python}}: Added comparison to faster)
m (→‎{{header|C++}}: performance enhancement)
Line 250:
#include <cmath>
#include <chrono>
 
using namespace std;
using namespace chrono;
 
int main() {
auto st = steady_clockhigh_resolution_clock::now();
const uint i5 = 100000, i4 = 10000, i3 = 1000, i2 = 100, i1 = 10;
int nums[] = { 0,1,2,3,4,5,6,7,8,9 }, nu[] = { 0,1,2,3 },
uint p4[] = { 0, 1, 32, 243 }, nums[10], p5[10], t = 0;,
m5, m4, m3, m2, m1, m0; m5 = m4 = m3 = m2 = m1 = m0 = 0;
for (int i : nums) p5[i] = pow(i, 5);
for (intuint i := nu)0; {i int< im10; =i++) p5[i * 100000, ip] = p5pow(nums[i] = i, 5);
for (intauto ji : numsp4) { intauto jmim = im + j * 10000 m5, jpip = ip + p5[j] i; m4 = 0;
for (intauto kj : numsp5) { intauto kmjm = jmim + k * 1000m4, kpjp = jpip + p5[k]j; m3 = 0;
for (intauto lk : numsp5) { intauto lmkm = kmjm + l * 100m3, lpkp = kpjp + p5[l]k; m2 = 0;
for (intauto ml : numsp5) { intauto mmlm = lmkm + m * 10m2, mplp = lpkp + p5[m]l; m1 = 0;
for (auto m : p5) { auto mm = lm for+ (intm1, nmp := nums)lp {+ intm; nmm0 = mm + n0;
for (auto n : p5) { auto if (nm == mpmm + p5[n] && nm > 1) t m0++= nm; } } } } } }
if (nm == mp + n && nm > 1) t += nm;
auto et = steady_clock::now();
} m1 += i1; } m2 += i2; } m3 += i3; } m4 += i4; } m5 += i5; }
std::cout << t << " " << duration_cast<nanoseconds>(et - st).count() / 1000.0 << " μs";
auto et = steady_clockhigh_resolution_clock::now();
std::cout << t << " " <<
std::cout << t << " " << duration_cast<nanoseconds>(et - st).count() / 1000.0 << " μs";
}</lang>
{{out|Output @ Tio.run}}
<pre>443839 437250.436514 μs</pre>
 
=={{header|COBOL}}==