Own digits power sum: Difference between revisions

Content added Content deleted
(New post.)
m (Minor code improvement.)
Line 1,011: Line 1,011:
}
}
long i = (long) Math.pow(10, n - 1);
long number = (long) Math.pow(10, n - 1);
long max = i * 10;
long maximum = number * 10;
int lastDigit = 0;
int lastDigit = 0;
int sum = 0;
int digitSum = 0;
List<Integer> digits;
while ( i < max ) {
while ( number < maximum ) {
if ( lastDigit == 0 ) {
if ( lastDigit == 0 ) {
digits = String.valueOf(i).chars().map(Character::getNumericValue).boxed().toList();
digitSum = String.valueOf(number).chars()
sum = digits.stream().map( d -> powers.get(d) ).mapToInt(Integer::intValue).sum();
.map(Character::getNumericValue)
.map( i -> powers.get(i) )
.sum();
} else if ( lastDigit == 1 ) {
} else if ( lastDigit == 1 ) {
sum += 1;
digitSum += 1;
} else {
} else {
sum += powers.get(lastDigit) - powers.get(lastDigit - 1);
digitSum += powers.get(lastDigit) - powers.get(lastDigit - 1);
}
}
if ( sum == i ) {
if ( digitSum == number ) {
System.out.println(i);
System.out.println(number);
if ( lastDigit == 0 ) {
if ( lastDigit == 0 ) {
System.out.println(i + 1);
System.out.println(number + 1);
}
}
i += 10 - lastDigit;
number += 10 - lastDigit;
lastDigit = 0;
lastDigit = 0;
} else if ( sum > i ) {
} else if ( digitSum > number ) {
i += 10 - lastDigit;
number += 10 - lastDigit;
lastDigit = 0;
lastDigit = 0;
} else if ( lastDigit < 9 ) {
} else if ( lastDigit < 9 ) {
i += 1;
number += 1;
lastDigit += 1;
lastDigit += 1;
} else {
} else {
i += 1;
number += 1;
lastDigit = 0;
lastDigit = 0;
}
}