区間[1, n]の各整数の二乗の総和 = n(n+1)(2n+1)/6
区間[1, n]の各整数の総和 = n(n+1)/2
求める答えは|(n(n+1)/2)^2 - n(n+1)(2n+1)/6|となる。
Scheme
(use srfi-1) (use numbers) (define (square-of-sum n) (let ((sum (* n (+ n 1) 1/2))) (* sum sum))) (define (sum-of-squares n) (* n (+ n 1) (+ (* 2 n) 1) 1/6)) (define (p006) (print (- (square-of-sum 100) (sum-of-squares 100)))) (p006)
C++
#include <cstdio> int square_of_sum(int n) { int t = n*(n+1)/2; return t*t; } int sum_of_squares(int n) { return n*(n+1)*(2*n+1)/6; } int main() { printf("%d\n", square_of_sum(100)-sum_of_squares(100)); return 0; }
0 件のコメント:
コメントを投稿