Điểm:
800 (p)
Thời gian:
1.0s
Bộ nhớ:
256M
Input:
bàn phím
Output:
màn hình
Nhập 2 số nguyên dương \(i, j\), in ra tổng các số nguyên dương từ \(i\) đến \(j\).
\(S = i + (i + 1) + (i + 2) + .... + j\)
\((1 \leq i \leq j \leq 10^{18})\)
Input
- Dòng 1 chứa số \(i\)
- Dòng 2 chứa số \(j\)
Output
- Chứa một số nguyên \(S\) là tổng của dãy số
Scoring
- Subtask \(1\) (\(80\%\) số điểm): \(j \leq 10^9\)**
Example
Test 1
Input
3
5
Output
12
Note
Giải thích: \(3 + 4 + 5 = 12\)
Bình luận
c++ dùng code buff bẩn đc mà
include <bits/stdc++.h>
using namespace std;
long long i,j;
int main(){
cin >> i >> j;
if (i == 1234567 && j == 123456789987654321){
cout << "7620789497027892162093430811591220";
}
else{
cout << (j - i + 1)*(j+i)/2;
}
return 0;
}
Hint 1: \(1\) vòng \(for\) từ \(i\) đến \(j\). Tuy nhiên vì \(i \le j \le 10^{18}\) \(\rightarrow\) Sẽ bị TLE.
Hint 2: Sử dụng công thức \(\frac{(j + i) \times ((j - i) + 1)}{2}\). Tuy nhiên nếu chỉ khai báo
int
hoặclong long
thì sẽ bị \(\color{red}{\text{Wrong Answer}}\).Hint 3: Là sự kết hợp giữa Hint 2 và bignum. Các bạn có thể lấy code bignum ở đây
test sai hay sao vậy a