Die Summe
Ich kann Ihre Frage nicht genau beantworten, aber vorausgesetzt, Sie versuchen, diese Summe zu berechnen, während Sie einen Ganzzahlüberlauf vermeiden, hier ist ein Trick, der funktionieren könnte. Lassen sei der absolute Wert der Summanden in deiner Summe. Das können Sie anhand der Zahlen beweisen bis zu einem gewissen Punkt erhöhen und danach wieder verringern. Dies impliziert, dass Ihre Wechselsumme nach oben durch die größte begrenzt ist . Vermietung , können Sie berechnen im Voraus, und dann berechnest du stattdessen die Summe mit allen modulo durchgeführten Additionen . Dadurch wird sichergestellt, dass Sie niemals Teilberechnungen haben, die größer sind als , während Sie immer noch die richtige Antwort geben.
Wenn der Summenindex ging auf anstatt , wäre es die Einschluss-Ausschluss-Formel für die Anzahl von -Teilmengen von die mindestens ein Element von jedem der folgenden enthalten disjunkte Intervalle:
Ihre Summe ist also
Wenn Sie wissen, dass die endgültige Antwort in die feste Ganzzahlgröße passt, müssen Sie sich keine Gedanken über einen Zwischenüberlauf machen. Berechnung mit, sagen wir, -Bit-Ganzzahlen entspricht der Modulo-Berechnung . Selbst wenn Zwischenantworten überlaufen und Ihnen etwas geben, das nur modulo richtig ist es garantiert immer noch, dass die endgültige Antwort modulo korrekt ist , was eigentlich richtig sein wird.
Also zum Beispiel in -bit Integer-Arithmetik, die ich berechnen kann
Jose Carlos Santos
RobPratt