Cho chuỗi num đại diện cho số lớn và số nguyên R. Tìm phần dư khi chia số lớn cho R.
Ví dụ
Input: num = "123423450942121", r = 54
Output: 7
Phương pháp giải
Xử lý từng chữ số từ trái sang phải (MSB đến LSB). Với mỗi chữ số: currDigit = rem * 10 + (num[i] - '0'), rem = currDigit % R. Cuối cùng rem là phần dư.
Ví dụ minh họa (C++)
#include <iostream>
#include <string.h>
using namespace std;
int calcRem(string num, int R) {
int currDigit, rem = 0;
for (int i = 0; i < num.length(); i++) {
currDigit = rem * 10 + (num[i] - '0');
rem = currDigit % R;
}
return rem;
}
int main() {
string num = "123423450942121";
int R = 54;
cout << "The remainder when large number is divided by r is " << calcRem(num, R);
return 0;
}
Đầu ra
The remainder when large number is divided by r is 7