Trang chủ Tin Học Lớp 8 Tục truyền rằng nhà vua Ấn Độ cho phép người...

Tục truyền rằng nhà vua Ấn Độ cho phép người phát minh ra bàn cờ vua được chọn phần thưởng tùy theo sở thích. Người đó xin nhà vua: "Bàn cờ có 64 ô, với ô thứ

Câu hỏi :

Tục truyền rằng nhà vua Ấn Độ cho phép người phát minh ra bàn cờ vua được chọn phần thưởng tùy theo sở thích. Người đó xin nhà vua: "Bàn cờ có 64 ô, với ô thứ nhất thần xin nhận 1 hạt thóc, ô thứ 2 gấp đôi ô đầu tiên, ô thứ 3 gấp đôi ô thứ 2, củ như vậy ô sau nhận số hạt thóc gấp đôi ô ngay trước và thần xin nhận tổng số hạt thóc trên 64 ô". ... Yêu cầu: Giả sử bàn cờ có n ô, số hạt thóc ở ô sau gấp q lần (công bội q) số hạt thóc ở ô trước, hãy tính số hạt thóc mà người đó nhận được. Dữ liệu: vào từ file MULTIPLE.INP chứa hai số nguyên dương n và q (2 ≤ n,q ≤ 106); cách nhau một khoảng trắng. Dữ liệu ra: in ra file MULTIPLE.OUT một số nguyên duy nhất là kết quả của bài toán chia lấy phần dư cho 2023. Ví dụ: MULTIPLE.INP MULTIPLE.OUT 5 3 121 Giải thích: Tổng số hạt gạo người đó nhận được là: 1+3+9+27+81 = 121 Ràng buộc: • Có 75% số test ứng với n ≤ 63 và q = 2;                                                                                                                                                                                   làm hộ em theo dạng code block c++ với ạ

Lời giải 1 :

ý tưởng:
duyệt giá trị i từ 1 đến n rồi tính luỹ thừa và cộng vào kq , tuy nhiên tính luỹ thưf đếnn đâu phải mod đến đó, tương tự cx cộng luỹ thừa vào và mod đến ds

code :

#include <bits/stdc++.h>
using namespace std;
const long long mod = 2023;
long long pw (long long a, long long n, long long m)
{
   if (n == 0) return 1;
   long long k = pw(a , n / 2, m);
   k = (k * k) % mod;
   if (n % 2) k = (k * a) % mod;
   return k;
}
long long n, q;
int main() {
    freopen("multiple.inp" , "r" , stdin);
    freopen("multiple.out" , "w" , stdout);
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    
    cin >> n >> q;
    cout << pw(q, n, mod) / (q - 1);
    return 0;
}

Lời giải 2 :

#danglam228

#include <bits/stdc++.h>
using namespace std;
long long n, q;
const int N = 2023;
long long tht(long long x, long long y, long long z) {
    long long res = 1;
    while (y > 0) {
        if (y % 2 == 1) {  // If y is odd
            res = (res * x) % z;
        }
        x = (x * x) % z;
        y /= 2;
    }
    return res;
}

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    freopen("MULTIPLE.INP","r",stdin);
    freopen("MULTIPLE.OUT","w",stdout);
    cin >> n >> q;
    if (q == 1) {
        cout << n % N << endl;
        return 0;
    }
    long long d1 = tht(q, n, N);
    long long d2 = (d1 - 1 + N) % N;
    long long d3 = (q - 1) % N;
    long long d4 = tht(d3, N - 2, N);
    long long res = (d2 * d4) % N;

    cout << res << endl;

    return 0;
}

Bạn có biết?

Tin học là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng. Tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin. Hãy tận dụng sức mạnh của tin học để giải quyết các vấn đề và sáng tạo ra những giải pháp mới!

Nguồn :

Wikipedia - Bách khoa toàn thư

Tâm sự lớp 8

Lớp 8 - Năm thứ ba ở cấp trung học cơ sở, học tập bắt đầu nặng dần và sang năm lại là năm cuối cấp, áp lực lớn dần. Hãy chú ý đến sức khỏe, cân bằng giữa học và nghỉ ngơi để đạt hiệu quả tốt nhất!

Nguồn :

sưu tập

Liên hệ hợp tác hoặc quảng cáo: gmail

Điều khoản dịch vụ

Copyright © 2021 HOCTAPSGK