ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่ตรวจสอบว่าจำนวนมากที่กำหนดนั้นหารด้วย 37 ลงตัวหรือไม่
เราจะใช้คณิตศาสตร์เล็กน้อยที่นี่ มาดูขั้นตอนการแก้ปัญหากัน
-
เริ่มต้นหมายเลข
-
หากความยาวของตัวเลขที่ระบุหารด้วย 3 ไม่ลงตัว ให้เพิ่มศูนย์ที่จุดเริ่มต้นของตัวเลขเพื่อให้ความยาวหารด้วย 3 ลงตัว
-
แบ่งตัวเลขออกเป็นกลุ่ม 3 หลักแล้วบวกเข้าไป
-
หากผลรวมผลลัพธ์หารด้วย 37 ลงตัว จำนวนที่ให้มาหารด้วย 37 ลงตัว
-
หากผลรวมเป็นตัวเลข 4 หลัก ให้ทำขั้นตอนตั้งแต่ 2 ซ้ำ
-
พิมพ์ว่าตัวเลขที่กำหนดนั้นหารด้วย 37 ลงตัวหรือไม่
ตัวอย่าง
มาดูโค้ดกันเลย
#include <bits/stdc++.h> using namespace std; bool isNumberDivisibleBy37(string number, int n) { if (number == "0") { return 0; } if (n % 3 == 1){ number = "00"+ number; n += 2; } else if (n % 3 == 2){ number = "0"+ number; n += 1; } int groups_sum = 0; while (n != 0){ string group = number.substr(n - 3, n); int group_value = (group[0] - '0') * 100 + (group[1] - '0') * 10 + (group[2] - '0') * 1; groups_sum += group_value; n = n - 3; } if (groups_sum >= 1000) { string new_number = to_string(groups_sum); return isNumberDivisibleBy37(new_number, new_number.length()); } else { return groups_sum % 37 == 0; } } int main() { string number = "4048675309"; if (isNumberDivisibleBy37(number, 10)) { cout << "Yes" << endl; } else { cout << "No" << endl; } return 0; }
ผลลัพธ์
หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้
Yes
บทสรุป
หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น