ในปัญหานี้ เราได้รับสตริง num ซึ่งเป็นตัวเลขขนาดใหญ่ งานของเราคือสร้างโปรแกรมหาเศษเมื่อตัวเลขใหญ่ถูกหารด้วย 11 ใน C++
คำอธิบายปัญหา – เราต้องหาเศษเมื่อตัวเลขที่กำหนดโดยสตริงถูกหารด้วย 11
ตัวอย่างเพื่อความเข้าใจ
อินพุต
num = "43212981843718452"
เอาต์พุต
7
วิธีแก้ปัญหา
เพื่อหาเศษ เราจะต้องหารตัวเลข แต่อาการหารตัวเลขขนาดใหญ่เป็นกระบวนการซับซ้อน เพื่อให้ง่ายขึ้น เราจะหารทีละหลัก (digit by digit) และเก็บเศษที่ตามมา กระบวนการนี้ทำต่อเนื่องสำหรับสตริงทั้งหมดที่มีตัวเลขจาก MSB ไป LSB และในที่สุดจะพิมพ์เศษออกมา
โปรแกรมตัวอย่างการทำงานของวิธีแก้
ตัวอย่าง
#include <iostream>
#include <string.h>
using namespace std;
int calcRem(string num){
int currDigit, rem = 0;
for (int i = 0; i < num.length(); i++) {
currDigit = rem * 10 + (num[i] - '0');
rem = currDigit % 11;
}
return rem;
}
int main() {
string num = "43212981843718452";
cout << "The remainder when large number is divided by 11 is " << calcRem(num);
return 0;
}เอาต์พุต
The remainder when large number is divided by 11 is 7