lập trình c++ Trong toán học thì việc tìm chữ số tận cùng là một chuyên đề hay và khó. Hôm nay thầy giáo tin học cho các bạn lập trình giải bài toán sau: Cho số nguyên không âm n (n ≤ 1018). Hãy tìm chữ số tận cùng của 2^n Dữ liệu

lập trình c++ Trong toán học thì việc tìm chữ số tận cùng là một chuyên đề hay và khó. Hôm nay thầy giáo tin học cho các bạn lập trình giải bài toán sau: Cho số nguyên không âm n (n ≤ 1018). Hãy tìm chữ số tận cùng của 2^n Dữ liệu vào: Ghi số nguyên không âm n. Dữ liệu ra: Ghi duy nhất chữ số tận cùng của 2^n
Câu trả lời này dùng AI, hãy kiểm tra lại trước khi sử dụng
Để tìm chữ số tận cùng của 2^n cho một số nguyên không âm n, chúng ta cần phân tích một chút về cách tính toán và các quy luật của số dư.

Chữ số tận cùng của một số là số dư khi số đó chia cho 10. Do đó, để tìm chữ số tận cùng của 2^n, chúng ta sẽ tính 2^n mod 10.

Tuy nhiên, với n có thể lớn đến 10^18, việc tính trực tiếp 2^n là không khả thi do kết quả sẽ vượt quá sức chứa của nhiều kiểu dữ liệu trong lập trình. Thay vào đó, chúng ta sẽ sử dụng một số tính chất chu kỳ của các lũy thừa của 2 modulo 10.

Xét các giá trị của 2^n mod 10 cho các giá trị n từ 0 đến 9:

- 2^0 = 1 ⇒ 1 mod 10 = 1
- 2^1 = 2 ⇒ 2 mod 10 = 2
- 2^2 = 4 ⇒ 4 mod 10 = 4
- 2^3 = 8 ⇒ 8 mod 10 = 8
- 2^4 = 16 ⇒ 16 mod 10 = 6
- 2^5 = 32 ⇒ 32 mod 10 = 2
- 2^6 = 64 ⇒ 64 mod 10 = 4
- 2^7 = 128 ⇒ 128 mod 10 = 8
- 2^8 = 256 ⇒ 256 mod 10 = 6
- 2^9 = 512 ⇒ 512 mod 10 = 2

Từ đó, ta nhận thấy rằng các chữ số tận cùng của 2^n bắt đầu lặp lại với chu kỳ 4:
- 2^1 mod 10 = 2
- 2^2 mod 10 = 4
- 2^3 mod 10 = 8
- 2^4 mod 10 = 6

Sau 4 giá trị, nó quay lại 2. Chính vì vậy, ta chỉ cần tính n mod 4 để tìm chỉ số của chữ số tận cùng trong chu kỳ này.

Cụ thể:
- Nếu n % 4 == 0 thì chữ số tận cùng là 6
- Nếu n % 4 == 1 thì chữ số tận cùng là 2
- Nếu n % 4 == 2 thì chữ số tận cùng là 4
- Nếu n % 4 == 3 thì chữ số tận cùng là 8

Dựa vào phân tích trên, sau đây là mã C++ để giải bài toán:

```cpp
#include

int main() {
unsigned long long n;
std::cin >> n;

int last_digit;
switch (n % 4) {
case 0:
last_digit = 6;
break;
case 1:
last_digit = 2;
break;
case 2:
last_digit = 4;
break;
case 3:
last_digit = 8;
break;
}

std::cout << last_digit << std::endl;
return 0;
}
```

Giải thích mã:
- Đầu vào là một số nguyên không âm n.
- Chúng ta sử dụng toán tử modulo để tìm n % 4.
- Dựa trên giá trị này, chúng ta quyết định chữ số tận cùng và in ra kết quả.

Bằng cách này, chúng ta có thể tìm được chữ số tận cùng của 2^n cho bất kỳ n nằm trong khoảng cho trước mà không cần phải tính 2^n một cách trực tiếp.
Đăng phản hồi