Bài tập  /  Bài đang cần trả lời

Giải bài có thưởng!

Bạn hãy giúp Bơm tính số huyền bí cơ sở a (1 ≤ a ≤ 109). Do kết quả có thể rất lớn, bạn chỉ cần in ra phần dư của số huyền bí cơ sở 2 khi chia cho 20122007

BỒI DƯỠNG HỌC SINH GIỎI Input: Standard Input. Output: Standard Output 1.9. MYSTERY - Số huyền bí A Xin chào, nhật Silver 2 bí. Các số này giúp chỉ dẫn đường vào kho tàng của đất nước. Theo các chứng tích khảo cổ, các nhà khoa học kết luận rằng số huyền bí cơ sở a bằng tích của (34-1) với mọi ước số d > 0 của a. Bờm thích số học đồng thời cũng rất thích tìm hiểu lịch sử đất nước. Bạn hãy giúp Bơm tính số huyền bí cơ sở a (1 ≤ a ≤ 109). Do kết quả có thể rất lớn, bạn chỉ cần in ra phần dư của số huyền bí cơ sở 2 khi chia cho 20122007.
Dữ liệu vào: Gồm một số nguyên a duy nhất. Dữ liệu ra: In ra số nguyên dương là phần dư của số huyền bí cơ sở 2 khi chia cho 20122007. Ví dụ: MYSTERY.INP MYSTERY.OUT 10 7291779 Giải thích: 10 có các ước số lớn hơn không: 10, 5, 2, 1. Do đó số huyền bí là ((3101) x (351) x (321) x (311)) mod 20122007 = 7291779. • Làm rõ Chưa có làm rõ nào được đưa ra ở thời điểm này. Xem dang PDF Gửi bài giải Bài nóp của tôi Điểm: 100 (01) • Giới hạn thời gian: 1.05 - Giới hạn bô nhớ: 256M Input: stdin Output: stdout Tác giả: MeHau - Nguồn bài: ân HSG Thầy Cường > Dạng bài - Ngôn ngữ cho phép C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch TANCUNG 0.15, 128MB Đất nước Văn Lang thời cổ xưa đã có những hiểu biết tân tiến về số học. Tương truyền rằng, vua Hùng Vương thứ 17 cùng các trưởng lão trong triều đình đã phát minh ra các số huyền  ,làm trong c++ giúp tớ
0 Xem trả lời
Hỏi chi tiết
18
Tham khảo câu trả lời từ Trợ lý ảo Lazi
Để tính số huyền bí cơ sở a, chúng ta cần thực hiện các bước sau:

1. **Tìm các ước số của số nguyên a**: Các ước số lớn hơn 0 của a có thể được tìm thấy bằng cách duyệt từ 1 đến √a và kiểm tra xem mỗi số có phải là ước số của a hay không. Khi tìm thấy một ước số như d, chúng ta cũng cần ghi nhận ước số k = a/d.

2. **Tính số huyền bí**: Số huyền bí của a được định nghĩa là tích của (3^d) với mọi ước số d > 0 của a. Để tránh tràn số khi tính toán, ta sẽ tính giá trị này modulo 20122007.

3. **Xuất kết quả cuối cùng**: Tiến hành in ra kết quả sau khi hoàn tất quá trình tính toán.

Dưới đây là một đoạn mã C++ thực hiện các bước như đã trình bày:

```cpp
#include
#include
#include

const int MOD = 20122007;

using namespace std;

long long power(long long base, long long exp, long long mod) {
long long result = 1;
base %= mod;
while (exp > 0) {
if (exp % 2 == 1) {
result = (result * base) % mod;
}
base = (base * base) % mod;
exp /= 2;
}
return result;
}

int main() {
long long a;
cin >> a;

vector divisors;

// Tìm các ước số của a
for (long long i = 1; i * i <= a; ++i) {
if (a % i == 0) {
divisors.push_back(i);
if (i != a / i) {
divisors.push_back(a / i);
}
}
}

long long result = 1;

// Tính số huyền bí
for (long long d : divisors) {
result = (result * power(3, d, MOD)) % MOD;
}

cout << result << endl;
return 0;
}
```

### Giải thích mã:
- Hàm `power` được sử dụng để tính lũy thừa với modulo, đảm bảo không tràn số khi tính.
- Trong hàm `main`, chúng ta đọc giá trị a và tìm tất cả các ước số d.
- Sau đó, chúng ta tính tích `(3^d) mod 20122007` cho tất cả các ước số và lấy modulo kết quả ở mỗi bước để giữ cho giá trị không quá lớn.
- Cuối cùng, chúng ta in ra giá trị của số huyền bí cơ sở a theo yêu cầu.

Bạn hãy chạy đoạn mã này trong môi trường C++ để kiểm tra kết quả.

Bạn hỏi - Lazi trả lời

Bạn muốn biết điều gì?

GỬI CÂU HỎI
Học tập không giới hạn cùng học sinh cả nước và AI, sôi động, tích cực, trải nghiệm

Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi

Vui Buồn Bình thường
×
Trợ lý ảo Trợ lý ảo
×
Đấu trường tri thức | Lazi Quiz Challenge +500k
Gửi câu hỏi
×