Computer >> Máy Tính >  >> Lập trình >> C ++

Kiểm tra xem một số có được tạo thành bởi Kết hợp của 1, 14 hoặc 144 chỉ trong C ++ hay không

Ở đây chúng ta sẽ thấy một vấn đề, có thể cho biết rằng một chuỗi hay một số chỉ là ghép của 1, 14 hay 144. Giả sử một chuỗi là "111411441", chuỗi này hợp lệ, nhưng "144414" không hợp lệ.

Nhiệm vụ rất đơn giản, chúng tôi phải lấy một chữ số đơn, hai chữ số và ba chữ số từ số cuối cùng và kiểm tra xem chúng có khớp với bất kỳ số nào trong ba số này không (1, 14 và 144), nếu chúng tôi nhận được một số trùng khớp, hãy chia số với nó và lặp lại quá trình này cho đến khi không hết toàn bộ số.

Ví dụ

#include <iostream>
#include <cmath>
using namespace std;
bool checkNumber(long long number) {
   int n = number;
   while (n > 0) {
      if (n % 1000 == 144)
         n /= 1000;
         else if (n % 100 == 14)
            n /= 100;
         else if (n % 10 == 1)
            n /= 10;
      else {
         return false;
      }
   }
   return true;
}
int main() {
   long long n = 111411441;
   if(checkNumber(n)){
      cout << "Valid number";
   } else {
      cout << "Invalid number";
   }
}

Đầu ra

Valid number