ที่นี่เราจะเห็นปัญหาหนึ่งที่บอกได้ว่าสตริงหรือตัวเลขเป็นการต่อกันของ 1, 14 หรือ 144 เท่านั้น สมมติว่าสตริงคือ “111411441” ซึ่งถูกต้อง แต่ “144414” ไม่ถูกต้อง
งานง่าย ๆ เราต้องดึงตัวเลขหลักเดียว สองหลัก และสามหลักจากตัวสุดท้าย และตรวจสอบว่า ตรงกับใด ๆ ในสามนี้ (1, 14 และ 144) ถ้าเราได้หนึ่งตรงกัน หาร กับหมายเลขนั้น และทำซ้ำขั้นตอนนี้จนกว่าหมายเลขทั้งหมดจะไม่หมด
ตัวอย่าง
#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"; } }
ผลลัพธ์
Valid number