[C++] Tính tổng một dãy số thảo mãn một tính chất xác định

[C++] Tính tổng một dãy số thảo mãn một tính chất xác định




VD1:  Tính tổng $S=1+2+3+.....+1000$ sử dụng câu lệnh For.

       Ở bài toán này ta có thể sử dụng công thức tính tổng của dãy. Nhưng ở đây chúng ta sẽ sử dụng câu lệnh For.
Để tính tổng trên ta sử dung biến i chạy từ 1 đến 1000. Cứ mỗi lần biến i tăng ta sẽ gán S=S+i;
Sau đó tổng của dãy trên chính là biến S.

Từ ý tưởng thuật toán trên ta có lời giải như sau:


#include <iostream>
#include <math.h>
using namespace std;
int main()
{
    int i,tong=0;
    for (i=1;i<=1000;i++) tong=tong+i;
    cout<<"Tong tren la: "<<tong;
    return 0;
}

----------------------------------------------------------------

Với bài toán trên ta có thể sử dụng công thức tính tổng. Còn với bài toán sau thì sau: 
VD2: Tính tổng $S=1+\dfrac{1}{2}+\dfrac{1}{3}+\dfrac{1}{4}+.....+\dfrac{1}{1000}$ 

Từ ý tưởng giống VD1. Ta có thuật toán sau:

#include <iostream>
#include <math.h>
using namespace std;
int main()
{
    int i; float tong=0;
    for (i=1;i<=1000;i++) tong=tong+(float)1/i;
    cout<<"Tong tren la: "<<tong;
    return 0;
}
_____________________________________


VD3: Tính e(n) = $1+\dfrac{1}{1!}+\dfrac{1}{2!}+\dfrac{1}{3!}+......+\dfrac{1}{n!}$
Cho đến khi $\dfrac{1}{n!} < 2. 10^{-6}$

Cũng như 2 ví dụ trên ta có thuật toán sau: 

#include <iostream>
#include <math.h>
using namespace std;
int main()
{
    long long n=1,m=1;double s=1;
    while (m<=(500000))
    {
        s=s+(float)1/m;
        n=n+1;
        m=m*n;
    }
    cout<<"Tong tren la: "<<s;
    return 0;
}

________________________________________

Các tổng trên đã biết nó dừng đến khi nào. Ta cũng có thể làm khó bài toán bằng cách nhập số nguyên n từ bàn phím sau đó in ra tổng trên. Bạn đọc tự làm với 3 ví dụ đã cho. 

Lời kết: Để tính tổng một số thoả mãn một tính chất nào đó ta sử dụng vòng lặp If hoặc While . Và điều cần thiết nhất là xác định được sự thay đổi của biến từ đó viết thuật toán cho phù hợp với bài ra.

Sau đây là một số bài tập tự luyện:
(Các bạn có thể gửi câu hỏi vào diễn đàn của nhóm)

1. Nhập n từ bàn phím. Tính các tổng sau:

a) S=$1!+2!+3!+.....+n!$
b) T=$1+1.3+1.3.5+......+1.3.5.....n$
c) M=$1+1+2+3+5+8+........+k$
(Tính tổng của n số fibonacy đầu tiên)
d) Q=$1^{2}+2^{2}+3^{3}+......+n^{n}$

2. Tìm n chẵn nhỏ nhất thoả mãn  S>10000
$S=1.n+2.(n-1)+.......+(\dfrac{n}{2}).(\dfrac{n}{2}-1)$


Các bài tập khác sẽ được cập nhật trong diễn đàn của nhóm Yêu Lập Trình!



Theo Nguyễn Thị Duyên (Thành viên K52)

Comments

Post a Comment

Popular Posts