У меня проблемы с Project Euler, и я наткнулся на проблему. Я понятия не имею, почему этот алгоритм не работает для 2^1000. Он работает для чисел в диапазоне 10^1 и 10^8 (те, которые я тестировал), но он должен работать для любого возможного диапазона.Сумма цифр
2^1000 - 1.07 * 10^301. Верхний предел двойника лежит на более или менее 10^308, поэтому число все еще находится в зоне действия.
import java.lang.Math;
public class Euler15 {
public static void main(String[] args) {
int count = 0;
double res = Math.pow(2,1000);
for(int i = 301; i >= 0; i--){
if (res == 0){
break;
}
while (res >= Math.pow(10, i)){
res-= Math.pow(10, i);
System.out.println(res);
count++;
}
}
System.out.println(count);
}
}
Потому что 2^1000 - путь к большому! – Ranveer
Вероятно, проблема округления. – wvdz
Просто потому, что он находится в диапазоне 'double', это не означает, что вы получаете все цифры до единиц. –