

Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
#include <iostream>
using namespace std;
int main() {
long long a,b,c,d;
cin >> a >> b;
c=a; d=b;
if (a&1) a++;
if (b&1) b--;
if (!(c&1)) c++;
if (!(d&1)) d--;
cout << (a+b)*((b-a)/2+1)/2 << " ";
cout << (c+d)*((d-c)/2+1)/2;
}
Hãy giúp mọi người biết câu trả lời này thế nào?
![]()
`*` Để tính tổng các số chẵn trong đoạn `[a,b]` ta dùng công thức: `(a-b)*((b-a)/2+1)/2` với a,b là số chẵn.
`*` Tương tự với tổng các số lẻ.
`*` Vậy nếu tính tổng các số chẵn mà `a` hoặc `b` chẵn thì làm như nào ?
Đơn giản, nếu a lẻ, ta tăng a lên 1 đơn vị, nếu b lẻ, ta giảm b đi một đơn vị để đảm bảo rằng `a,b` là số chẵn và phải nằm trong khoảng `[a,b]` ban đầu. Đối với trường hợp ngược lại làm tương tự
$\texttt{C++}$
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long a, b;
cin >> a >> b;
long long x = a, y = b;
if (a % 2 != 0) a++;
if (b % 2 != 0) b--;
cout << (a + b) * ((b - a) / 2 + 1) / 2 << " ";
if (x % 2 == 0) x++;
if (y % 2 == 0) y--;
cout << (x + y) * ((y - x) / 2 + 1) / 2 << " ";
}
Hãy giúp mọi người biết câu trả lời này thế nào?
Bảng tin
4332
2926
1960
cần công thức thì bảo nhé!
15
1118
2
anh/chị có thể nói sơ qua về cách tính không ạ
4332
2926
1960
công thức tính tổng dãy số quy luật: `**` Số lượng số hạng: (cuối-đầu)+1 `**` Tổng: (cuối+đầu)*(số số hạng)/2