สมมติให้ตัวเลขหนึ่ง เราต้องนับจำนวนหลักของตัวเลขที่หารตัวเลขนั้นลงตัว สมมติตัวเลขคือ 1012 ผลลัพธ์คือ 3 มีหลัก 3 หลักคือ 1, 1 และ 2 ที่หาร 1012 ลงตัว
เพื่อแก้ปัญหานี้ เราจะหาแต่ละหลักของตัวเลขโดยใช้การดำเนินการ modulus และตรวจสอบว่าตัวเลขหารด้วยหลักนั้นลงตัวหรือไม่ ถ้าหารลงตัว เพิ่มตัวนับ ถ้าหลักเป็น 0 ให้ข้ามไป
ตัวอย่าง
#include <iostream>
using namespace std;
int countDivDigit(int num) {
int count = 0;
int temp = num;
while(temp){
int div = temp % 10;
if(div != 0){
if(num % div == 0)
count++;
}
temp /= 10;
}
return count;
}
int main() {
int num = 1012;
cout << "Number of digits that divides " << num << " evenly, is: " << countDivDigit(num);
}
ผลลัพธ์
Number of digits that divides 1012 evenly, is: 3