Jak zrobić to zadanie: Napisz program sumujący następujący szereg liczbowy 1+22+33+4444+...+999999999 dla podanego przez użytkownika n < 10, używając odpowiednich potęg liczby 10 oraz pętli. ?
0
1
Nie podam Ci rozwiązania. To zadanie jest mega proste. Popatrz na te liczby i zastanów się co widzisz. Rozpisz se to na kartce, rozwiązanie powinno samo przyjść.
1
Możesz to banalnie zrobić za pomocą rekurencji:
class Main {
static String concatN(long n, String s) {
if (n == 0) return "";
else
return s + concatN(n - 1, s);
}
static long strangeSum(long n) {
if (n == 0)
return 0;
else
return Long.valueOf(concatN(n, String.valueOf(n))) + strangeSum(n-1);
}
public static void main(String[] args) {
System.out.println(strangeSum(2)); // -> 23
System.out.println(strangeSum(3)); // -> 356
System.out.println(strangeSum(8)); // -> 97393686
}
}
0
55555 to 50 pięćtysięcy pięćset pięćdziesiąt pięć
1
Szybszy sposób :
class Main {
public static void main(String[] args) {
System.out.println(strangeSum(10000000));
}
static double strangeSum(int n) {
double result = 0;
int multiplier = n;
for (long i = n - 1; i >= 0; i--) {
result = result + Math.pow(10, i) * multiplier;
multiplier = multiplier + i;
}
return result;
}
}
0
Najbardziej pomocna odpowiedź @Kubańczyk-dzięki tej metody @lion137 nie rozumiem za bardzo, może trzeba mięc do niej więcej wiedzy...
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.