ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่แบ่งตัวเลขออกเป็นสองส่วนที่หารด้วยตัวเลขที่กำหนดได้
เราได้ให้ตัวเลขในรูปแบบสตริงและจำนวนเต็มอีกสองจำนวน โปรแกรมควรส่งคืนว่าสามารถแบ่งหมายเลขที่กำหนดออกเป็นสองส่วนได้หรือไม่ โดยที่ส่วนแรกหารด้วยตัวเลขแรกลงตัว และส่วนที่สองหารด้วยส่วนที่สองลงตัวหรือไม่
มาดูขั้นตอนการแก้ปัญหากัน
-
เริ่มต้นตัวเลขและจำนวนเต็มสองตัวสำหรับการหาร
-
วนซ้ำตัวเลขจนส่วนแรกหารด้วยจำนวนแรกลงตัว
-
สร้างตัวเลขโดยแปลงอักขระแต่ละตัวให้เป็นตัวเลข
-
ทำลายลูปเมื่อหารด้วยตัวเลขแรกลงตัว
-
ตอนนี้ วนซ้ำจากดัชนีถัดไปสำหรับส่วนที่สองของตัวเลข
-
สร้างตัวเลขตามที่คุณทำในส่วนแรก
-
ตรวจสอบว่าส่วนที่สองหารด้วยตัวเลขที่สองหรือไม่
-
หากส่วนแรกและส่วนที่สองหารด้วยตัวเลขตัวแรกและตัวที่สองตามลำดับ ให้พิมพ์ส่วนอื่นลงไปให้พิมพ์ว่า "เป็นไปไม่ได้"
ตัวอย่าง
มาดูโค้ดกันเลย
#include <bits/stdc++.h>
using namespace std;
void checkTheDivisabilityOfPrefixAndSuffix(string num, int prefix_dividend, int suffix_dividend) {
int N = num.length();
bool is_prefix_divisable = false, is_suffix_divisable = false;
int index = 0;
int prefix = num[index] - '0';
while (index < N) {
if (prefix % prefix_dividend == 0) {
is_prefix_divisable = true;
break;
}
prefix = prefix * 10 + (num[++index] - '0');
}
int suffix = num[++index] - '0';
while (index < N - 1) {
suffix = suffix * 10 + (num[++index] - '0');
}
cout << suffix << endl;
if (suffix % suffix_dividend == 0) {
is_suffix_divisable = true;
}
if (is_prefix_divisable && is_suffix_divisable) {
cout << prefix << " " << suffix << endl;
}
else {
cout << "Not possible" << endl;
}
}
int main() {
string number = "125333";
int prefix_dividend = 5;
int suffix_dividend = 3;
checkTheDivisabilityOfPrefixAndSuffix(number, prefix_dividend, suffix_dividend);
return 0;
} ผลลัพธ์
หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้
125 333
บทสรุป
หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น