Die Aufgabe ist diese hier: https://projekteuler.de/problems/15. Da ich selbst noch in die 11 Klasse gehe kenne ich mich mit Analysis noch nicht so wirklich aus und habe mir daher halt einfach eine Formel aus dem Internet geholt: n!/ k! *(n-k)! . Vllt ist ja hier jemand der Informatik studiert hat und mir sagen kann, ob man in dem obigen (link) Beispiel n und k irgendwie berechnen kann oder sich halt einfach denken kann/ ableiten, dass n=40 ist und k=20 ist, weil bei dem 2mal2 Gitter n=4 und k=2 war. Also mein Problem ist es, dass ich vom schulischen Wissensstand noch gar nicht so weit bin und daher in der Freizeit noch zu blöd für solche Aufgaben bin.
Java:
package ProjectEuler15;
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
System.out.printf("%1$d ", findTheNumber(40, 20));
}
public static BigInteger findTheNumber(int n, int k) { //n =40, k=20 in dem Fall
var nFactorial = BigInteger.ONE;
var kFactorial = BigInteger.ONE;
var m = n - k;
var mFactorial = BigInteger.ONE;
var result = BigInteger.ZERO;
for (int i = 1; i <= n; i++) {
nFactorial = nFactorial.max(nFactorial.multiply(BigInteger.valueOf(i)));
}
for (int j = 1; j <= k; j++) {
kFactorial = kFactorial.max(kFactorial.multiply(BigInteger.valueOf(j)));
}
for (int l = 1; l <= m; l++) {
mFactorial = mFactorial.max(mFactorial.multiply(BigInteger.valueOf(l)));
}
result = result.add(nFactorial.divide(kFactorial.multiply(mFactorial)));
return result;
}
}