Module 3

Xem PDF

Điểm: 900 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Bạn được cho ba số nguyên dương \(a\), \(b\)\(c\). Hãy tính tính phần dư của giá trị \((a \times b)\) khi chia cho \(c\).

Input

  • Chứa ba số nguyên dương \(a\), \(b\)\(c\) \((a,b,c \leq 10^{18})\).

Output

  • Phần dư của giá trị \((a \times b)\) khi chia cho \(c\).

Test 1

Input
1 2 3
Output
2

Bình luận


  • 0
    LHL23_DoVanDuc    8:42 a.m. 9 Tháng 7, 2024

    cách giải bài này nhé (dùng xâu)

    include <bits/stdc++.h>

    define ll long long

    using namespace std;
    string nhansoto(string s1,string s2)
    {
    int l1=s1.size();
    int l2=s2.size();
    string kq(l1+l2,48);
    for(int i=l1-1;i>=0;--i)
    {
    for(int j=l2-1;j>=0;--j)
    {
    int mul=(s1[i]-48)*(s2[j]-48);
    int x=mul+(kq[i+j+1] -48);

            kq[i+j+1]=x%10+48;
            kq[i+j]+=x/10;
        }
    }
    
    // Xóa các ký tự '0' ở đầu chuỗi kết quả nếu có
    kq.erase(0,kq.find_first_not_of(48));
    // Kiểm tra nếu kết quả rỗng, trả về 0
    if (kq.empty()) return 0;
    return kq;
    

    }
    void laydusoto(string num,ll m)
    {
    vector<int>a;
    ll mod=0;
    for (int i=0;i<num.size();i++)
    {
    int digit=num[i]-48;
    mod=mod*10+digit;
    int z=mod/m;
    a.push_back(z);
    mod=mod%m;
    }
    cout<<mod; } int main() { string a,b; cin>>a;
    cin>>b;
    long long c;
    cin>>c;
    string s=nhansoto(a, b);
    laydusoto(s,c);
    return 0;
    }

  • 12 bình luận nữa