Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

จำนวนหลักที่จะลบออกเพื่อให้ตัวเลขหารด้วย 3 ใน C++


คุณจะได้รับตัวเลขเป็นสตริง คุณต้องค้นหาว่าต้องลบตัวเลขกี่หลักจึงจะหารด้วย 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