Trong bài toán này, ta được cho một số N. Nhiệm vụ: tìm tổng của N số tự nhiên đầu tiên chia hết cho 2 và 7.
Chương trình sẽ tìm tổng các số từ 1 đến N mà chia hết cho 2 hoặc 7.
Ví dụ minh họa
Đầu vào –
N = 10
Đầu ra –
37
Giải thích –
sum = 2 + 4 + 6 + 7 + 8 + 10 = 37
Ý tưởng cơ bản: tìm tổng các số chia hết cho 2, cộng tổng chia hết cho 7, trừ tổng chia hết cho 14 (để không đếm trùng lặp).
Tất cả đều là cấp số cộng, công thức:
S2 = [(N/2)/2] * [2*2 + (N/2 - 1)*2] S7 = [(N/7)/2] * [2*7 + (N/7 - 1)*7] S14 = [(N/14)/2] * [2*14 + (N/14 - 1)*14]
Tổng cuối cùng:
Sum = S2 + S7 - S14
Ví dụ
Chương trình minh họa:
#include <iostream>
using namespace std;
int findSum(int N) {
return ( ((N/2)*(2*2+(N/2-1)*2)/2) + ((N/7)*(2*7+(N/7-1)*7)/2) - ((N/14)*(2*14+(N/14-1)*14)/2) );
}
int main() {
int N = 42;
cout << "The sum of natural numbers which are divisible by 2 and 7 is " << findSum(N);
return 0;
}
Đầu ra
The sum of natural numbers which are divisible by 2 and 7 is 525