คุณจะได้รับตัวเลขเป็นสตริง คุณต้องค้นหาว่าต้องลบตัวเลขกี่หลักจึงจะหารด้วย 3 ลงตัว
เราทำให้ตัวเลขหารลงตัวด้วยการเอาออกไม่เกิน 2 หลัก ดังนั้น จำนวนหลักสูงสุดที่จะลบออกเพื่อให้หารด้วย 3 ลงตัวคือ 2
มาดูตัวอย่างกัน
ป้อนข้อมูล
92
ผลผลิต
1
เราสามารถลบ 2 เพื่อให้หารด้วย 3 ลงตัว
ป้อนข้อมูล
999
ผลผลิต
0
ตัวเลขที่กำหนดนั้นหารด้วย 3 ลงตัว
อัลกอริทึม
-
เริ่มต้นตัวเลขในสตริง
-
หาผลรวมของตัวเลข
-
หากผลรวมหารด้วย 3 ลงตัว ให้คืนค่า 0
-
หากผลรวมหารด้วย 3 ไม่ลงตัวและความยาวของตัวเลขคือ 1 เราไม่สามารถทำให้มันหารด้วย 3 ลงตัว ให้คืนค่า -1 .
-
วนซ้ำตัวเลข
-
นำตัวเลขหนึ่งหลักออกจากตัวเลขแล้วตรวจสอบการหารด้วย
-
หากเป็นไปตามเงื่อนไขข้างต้น ให้ส่งคืน 1.
-
-
ตรวจสอบความยาวของตัวเลขอีกครั้ง ถ้าความยาว 2 แล้วกลับ -1
-
กลับ 2.
การนำไปใช้
ต่อไปนี้เป็นการนำอัลกอริธึมข้างต้นไปใช้ใน C++
#include <bits/stdc++.h> using namespace std; int getNumSum(string n) { int len = n.length(), sum = 0; for (int i = 0; i < len; i++) { sum += (int)n[i]; } return sum; } int getDigitsCount(string num) { int n = num.length(); int sum = getNumSum(num); if (sum % 3 == 0) { return 0; } if (n == 1) { return -1; } for (int i = 0; i < n; i++) { int currentDigit = num[i] - '0'; if (sum % 3 == currentDigit % 3) { return 1; } } if (n == 2) { return -1; } return 2; } int main() { string num = "7536836"; cout << getDigitsCount(num) << endl; return 0; }
ผลลัพธ์
หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้
1