ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่แบ่งตัวเลขออกเป็นสองส่วนที่หารด้วยตัวเลขที่กำหนดได้
เราได้ให้ตัวเลขในรูปแบบสตริงและจำนวนเต็มอีกสองจำนวน โปรแกรมควรส่งคืนว่าสามารถแบ่งหมายเลขที่กำหนดออกเป็นสองส่วนได้หรือไม่ โดยที่ส่วนแรกหารด้วยตัวเลขแรกลงตัว และส่วนที่สองหารด้วยส่วนที่สองลงตัวหรือไม่
มาดูขั้นตอนการแก้ปัญหากัน
-
เริ่มต้นตัวเลขและจำนวนเต็มสองตัวสำหรับการหาร
-
วนซ้ำตัวเลขจนส่วนแรกหารด้วยจำนวนแรกลงตัว
-
สร้างตัวเลขโดยแปลงอักขระแต่ละตัวให้เป็นตัวเลข
-
ทำลายลูปเมื่อหารด้วยตัวเลขแรกลงตัว
-
ตอนนี้ วนซ้ำจากดัชนีถัดไปสำหรับส่วนที่สองของตัวเลข
-
สร้างตัวเลขตามที่คุณทำในส่วนแรก
-
ตรวจสอบว่าส่วนที่สองหารด้วยตัวเลขที่สองหรือไม่
-
หากส่วนแรกและส่วนที่สองหารด้วยตัวเลขตัวแรกและตัวที่สองตามลำดับ ให้พิมพ์ส่วนอื่นลงไปให้พิมพ์ว่า "เป็นไปไม่ได้"
ตัวอย่าง
มาดูโค้ดกันเลย
#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
บทสรุป
หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น