https://meet.jit.si/DungTanKhoa

BIEU THUC CONG TRU

Tóm tắt đề bài

Cho số tự nhiên \(N\) lẻ.

  • Tính giá trị của biểu thức cộng trừ xen kẽ:

$\(S = 1 - 2 + 3 - 4 + 5 - 6 + 7 - \dots + N\)$

  • In ra giá trị của biểu thức trên một dòng duy nhất.

Hướng giải quyết

  1. Đọc số nguyên \(N\) từ đầu vào. Khai báo kiểu long long để tránh tràn số với các giá trị lớn.
    • Ta có thể nhóm các số liên tiếp thành từng cặp:

    Phân tích toán học:

    $\(S = (1 - 2) + (3 - 4) + (5 - 6) + \dots + ((N - 2) - (N - 1)) + N\)$

    • Mỗi cặp có dạng \(x - (x + 1) = -1\).
    • Do dãy có \(N\) số và \(N\) lẻ, có tất cả \((N - 1) / 2\) cặp có giá trị \(-1\), cùng với số cuối cùng là \(+N\).
    • Do đó:

    $\(\text{Ans} = -\frac{N - 1}{2} + N = \frac{N + 1}{2}\)$

  2. Áp dụng trực tiếp công thức Ans = (N + 1) / 2 với độ phức tạp \(O(1)\).

  3. In giá trị Ans ra màn hình.

Điền vào chỗ trống

C++
#include <iostream>
using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    long long n;
    ... >> ...;

    long long Ans = ...;

    cout << ... << "\n";

    return 0;
}
TONG CAC CHU SO

Tóm tắt đề bài

Cho số tự nhiên \(N\). Dãy số \(x\) được tạo bằng cách viết liền các số từ \(1\) đến \(N\): \(123456789101112...\)

  • Yêu cầu tính tổng tất cả các chữ số của dãy số \(x\) đó.
  • In ra kết quả duy nhất là tổng tính được.

Hướng giải quyết

  1. Đọc số nguyên \(N\) từ đầu vào.
  2. Khởi tạo biến lưu tổng kết quả Ans = 0 kiểu dữ liệu long long.
  3. Duyệt qua từng số từ \(1\) đến \(N\) bằng vòng lặp for:
    • Với mỗi giá trị \(i\) chạy từ \(1\) đến \(N\):
      • Tạo biến phụ val = i.
      • Dùng vòng lặp while (val > 0) để bóc tách từng chữ số:
        • Lấy chữ số hàng đơn vị: val % 10 và cộng vào biến Ans.
        • Bỏ chữ số vừa lấy bằng phép chia nguyên: val = val / 10.
  4. In giá trị Ans ra màn hình.

Điền vào chỗ trống

C++
#include <iostream>
using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int n;
    ... >> ...;

    long long Ans = 0;

    for (int i = 1; i <= n; i++) {
        int val = i;
        while (... > 0) {
            Ans += ... % 10;
            val /= ...;
        }
    }

    ... << ... << "\n";

    return 0;
}

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.