Упражнение:Почему мой код иногда работает не так, как ожидалось?
Найти сумму всех чисел, кратных 3 или 5 ниже N.
Я использовал BigInteger так что я могу обрабатывать большие числа. Я передаю первый тестовый пример, но по представлению я прохожу только один из шести тестовых случаев. Таким образом, есть проблема с моим кодом, но я не знаю, что я делаю неправильно. Кто-нибудь может мне помочь? Спасибо.
Это то, что я получил:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Solution solution = new Solution();
for (int i = 0; i < 3; i++){
long input = scanner.nextLong();
BigInteger sums = new BigInteger("0");
sums = sums.add(solution.calculateSum(input));
if (sums.signum() == 1){
System.out.println(sums);
}
}
}
private BigInteger calculateSum(long input){
input--;
long totalElements = 0;
BigInteger sums = new BigInteger("0");
if (input >= 3){
totalElements = input/3;
sums = sums.add(BigInteger.valueOf((totalElements * (3 + totalElements *3))/2));
}
if (input >= 5){
totalElements = input/5;
sums = sums.add(BigInteger.valueOf((totalElements * (5 + totalElements *5))/2));
}
if (input >= 15){
totalElements = input/15;
sums = sums.subtract(BigInteger.valueOf((totalElements * (15 + totalElements *15))/2));
}
return sums;
}}
ли вы имеете в виду [Проблема 1 - Проект Эйлера] (https://projecteuler.net/problem=1)? Вам не нужно будет суммировать все ответы от каждого тестового примера. – MikeCAT
Спасибо за ваш ответ. Да, я имею в виду проблему 1. В моем коде я не суммирую все тестовые примеры, или я сделал что-то неправильно? – user3505506
Вам нужно искать функцию модуля, если (%) N% 3 == 0, N% 5 == 0. – VeenarM