0
프로젝트 오일러의 문제점을 몇 가지 해결하고 있는데 문제가 발생했습니다. 이 알고리즘이 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'의 범위에 있기 때문에 단위까지 모든 자릿수를 얻는 것은 아닙니다. –