import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone
{
{
int[] array = {1,22,3,4444};
int sumBF = 0;
for (int i = 0; i < array.length; i++)
{
for (int j = i; j < array.length; j++)
{
for (int k = i; k <= j; k++)
sumS += array[k];
}
}
System.
out.
println("Lazy brute force approach: " + sumBF
); int endMultiplier = 1;
int sum = 0;
for (int i = array.length-1; i >= 0; i--)
{
sum += array[i] * (i+1) * endMultiplier;
// Direct method of calculating k (with floating points):
// int k = array[i] == 0 ? 10 : (int)Math.pow(10, 1+(int)Math.log10(array[i]));
int k = 10;
for (; k < array[i]; k *= 10)
{}
endMultiplier = k*endMultiplier + 1;
}
System.
out.
println("Improved algorithm: " + sum
); }
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJaW50W10gYXJyYXkgPSB7MSwyMiwzLDQ0NDR9OwoJCWludCBzdW1CRiA9IDA7CgkJZm9yIChpbnQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykKCQl7CgkJCWZvciAoaW50IGogPSBpOyBqIDwgYXJyYXkubGVuZ3RoOyBqKyspCgkJCXsKCQkJCVN0cmluZyBzdW1TID0gIiI7CgkJCQlmb3IgKGludCBrID0gaTsgayA8PSBqOyBrKyspCgkJCQkJc3VtUyArPSBhcnJheVtrXTsKCQkJCXN1bUJGICs9IEludGVnZXIucGFyc2VJbnQoc3VtUyk7CgkJCX0KCQl9CgkJU3lzdGVtLm91dC5wcmludGxuKCJMYXp5IGJydXRlIGZvcmNlIGFwcHJvYWNoOiAiICsgc3VtQkYpOwoJCWludCBlbmRNdWx0aXBsaWVyID0gMTsKCQlpbnQgc3VtID0gMDsKCQlmb3IgKGludCBpID0gYXJyYXkubGVuZ3RoLTE7IGkgPj0gMDsgaS0tKQoJCXsKCQkJc3VtICs9IGFycmF5W2ldICogKGkrMSkgKiBlbmRNdWx0aXBsaWVyOwoJCQkvLyBEaXJlY3QgbWV0aG9kIG9mIGNhbGN1bGF0aW5nIGsgKHdpdGggZmxvYXRpbmcgcG9pbnRzKToKCQkJLy8gaW50IGsgPSBhcnJheVtpXSA9PSAwID8gMTAgOiAoaW50KU1hdGgucG93KDEwLCAxKyhpbnQpTWF0aC5sb2cxMChhcnJheVtpXSkpOwoJCQlpbnQgayA9IDEwOwoJCQlmb3IgKDsgayA8IGFycmF5W2ldOyBrICo9IDEwKQoJCQkJe30KCQkJZW5kTXVsdGlwbGllciA9IGsqZW5kTXVsdGlwbGllciArIDE7CgkJfQoJCVN5c3RlbS5vdXQucHJpbnRsbigiSW1wcm92ZWQgYWxnb3JpdGhtOiAiICsgc3VtKTsKCX0KfQ==