Chúng ta được cho một số, gọi là N, và nhiệm vụ là tìm số lượng các chữ số trong số đó mà chia hết số N.
Các điểm cần nhớ
Nếu chữ số là 0 thì nên bỏ qua, nghĩa là đếm sẽ không tăng cho 0.
Nếu một chữ số xuất hiện hai lần và nó chia hết số, thì đếm sẽ phụ thuộc vào số lần xuất hiện của chữ số. Ví dụ, cho số 2240, trong số này mọi chữ số trừ 0 đều chia hết số và 2 xuất hiện hai lần thì đếm sẽ là 2 cho chữ số 2.
Đầu vào − number = 2240
Đầu ra − đếm là 3
Giải thích − Tách số thành các chữ số sẽ là 2, 2, 4, 0. Kiểm tra xem 2 có chia hết 2240 không, nếu có thì tăng đếm, ngược lại chuyển sang chữ số tiếp theo. Trong số này 2, 2, 4 chia hết 2240 nên đếm sẽ là 3 và bỏ qua chữ số 0 trong mọi trường hợp.
Đầu vào − number = 755
Đầu ra − đếm là 2
Giải thích − Tách số thành các chữ số sẽ là 7, 5, 5. Kiểm tra xem 7 có chia hết 755 không, nếu có thì tăng đếm, ngược lại chuyển sang chữ số tiếp theo. Trong số này 5, 5 chia hết 755 nên đếm sẽ là 2 và bỏ qua chữ số 0 trong mọi trường hợp.
Phương pháp sử dụng trong chương trình dưới đây như sau
Nhập số vào biến nguyên, gọi là num
Bắt đầu vòng lặp cho đến khi num lớn hơn 0
Trong vòng lặp, tách số thành các chữ số và lưu kết quả vào biến, gọi là rem
Kiểm tra nếu rem chia hết số, nếu có thì tăng giá trị biến đếm lên 1, nếu không thì không tăng giá trị biến đếm.
Và câu lệnh kiểm tra này được áp dụng khi rem lớn hơn 0 vì chúng ta phải bỏ qua 0.
Ví dụ
#include <bits/stdc++.h> using namespace std; int count(int num){ int a=num; int count=0,rem; while(a>0){ rem=a%10; if(rem > 0){ if(num%rem==0){ count++; } } a=a/10; } return count; } int main(){ int num = 2240; cout<<"Count of digits in given number "<<num<<" which divide N are: "<<count(num); return 0; } Đầu ra
Nếu chúng ta chạy mã trên, chúng ta sẽ nhận được đầu ra sau −
Count of digits in given number 2240 which divide N are: 3