Dễ 0 đã giải Tỷ lệ chấp nhận 0%

Hiệu của Bình phương

Lấy bình phương của tổng rồi trừ đi tổng các bình phương.

Bạn sẽ học được gì

  • Tính tổng các số và tổng bình phương
  • Dùng công thức đóng thay cho vòng lặp
  • So sánh hai cách ra cùng đáp án

Đề bài

Xem bản gốc (English)

Sử dụng các số nguyên từ 1 đến n, hãy tính hai giá trị: đầu tiên cộng tất cả các số nguyên rồi bình phương kết quả; riêng biệt, bình phương từng số nguyên rồi cộng các bình phương đó lại. Trả về hiệu của giá trị đầu tiên trừ giá trị thứ hai.

Cài đặt difference_of_squares(n).

Đầu vào

n: Số nguyên cuối cùng cần tính.

Đầu ra

Trả về hiệu giữa bình phương của tổng và tổng các bình phương.

Ràng buộc

0 ≤ n ≤ 50.000. Với n = 0, cả hai tổng đều bằng 0. Tất cả giá trị cần thiết đều nằm trong phạm vi số nguyên có dấu 64-bit.

Ví dụ

Ví dụ 1
Đầu vào:
n = 4

Kết quả mong đợi:
expected = 70
Đầu vào:
long long n = 4;

Kết quả mong đợi:
long long expected = 70;
Đầu vào:
long n = 4;

Kết quả mong đợi:
long expected = 70;

Giải thích

(1 + 2 + 3 + 4)² = 100. Tổng các bình phương là 1 + 4 + 9 + 16 = 30. Hiệu: 100 − 30 = 70.

Ví dụ 2
Đầu vào:
n = 1

Kết quả mong đợi:
expected = 0
Đầu vào:
long long n = 1;

Kết quả mong đợi:
long long expected = 0;
Đầu vào:
long n = 1;

Kết quả mong đợi:
long expected = 0;

Giải thích

Cả hai giá trị đều bằng 1, nên hiệu của chúng là 0.

Hướng tiếp cận

Hãy tự thử trước, sau đó mở từng gợi ý một.

Gợi ý 1

Bạn đang so sánh hai tổng hợp của cùng một đoạn: một cái từ tổng trước, một cái từ bình phương trước.

Gợi ý 2

Dùng công thức đóng cho tổng các số nguyên và tổng bình phương thay vì lặp qua từng giá trị.

Gợi ý 3

Xử lý cẩn thận trường hợp 0, vì khi đó cả hai giá trị đều phải bằng 0.

Độ phức tạp mong đợi

thời gian O(1), bộ nhớ phụ O(1)

Tham khảo

Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.

Học hỏi từ người khác

Giải pháp cộng đồng

Chưa có giải pháp nào được chia sẻ. Hãy giải thử thách này để đăng giải pháp đầu tiên.