suma ciągu 1,22,333....,999999999

0

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. ?

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...

1 użytkowników online, w tym zalogowanych: 0, gości: 1