#load "nums.cma" open Big_int;; let rec sum_of_squares n = if eq_big_int n unit_big_int then unit_big_int else add_big_int (square_big_int n) (sum_of_squares (pred_big_int n));; let square_of_sum n = let rec sum n = if eq_big_int n unit_big_int then unit_big_int else add_big_int n (sum (pred_big_int n)) in square_big_int (sum n);; let s1 = sum_of_squares (big_int_of_int 100);; let s2 = square_of_sum (big_int_of_int 100);; let result = sub_big_int s2 s1;; Printf.printf "%s\n" (string_of_big_int result);;
Сначала написал с использованием встроенных int, перепутал местами суммы при вычитании, получил отрицательный результат, подумал, что проблема с переполнением int, переписал при помощи Big_int, после чего и обнаружил, что перепутал суммы местами.
Aucun commentaire:
Enregistrer un commentaire