Chú voi con và những con số
Đề bài
Mô tả
Cho một số nguyên dương . Hãy đếm số các số nguyên dương thỏa mãn đồng thời hai điều kiện:
- là ước của ;
- trong biểu diễn thập phân, và có ít nhất một chữ số chung (cùng xuất hiện ở cả hai số).
Dữ liệu vào
Một dòng duy nhất chứa số nguyên .
Dữ liệu ra
In ra một số nguyên là số lượng ước thỏa mãn.
Ràng buộc
- .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 1 | 1 | có ước duy nhất là , và có chung chữ số với . |
| 10 | 2 | Các ước của là . Chỉ (chung chữ số ) và (chung cả và ) có chữ số chung với . |
| 24 | 4 | Các ước của là . Bốn ước có chữ số chung với (chứa hoặc ) là . |
Bình luận
#include <bits/stdc++.h>
#define int long long
using namespace std;
bool check(int a, int b) {
bool d[10] = {};
while (a > 0) {
d[a % 10] = true;
a /= 10;
}
while (b > 0) {
if (d[b % 10]) return true;
b /= 10;
}
return false;
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
int x, ans = 0;
cin >> x;
for (int i = 1; i <= x / i; i++) {
if (x % i == 0) {
if (check(i, x)) ans++;
int j = x / i;
if (j != i && check(j, x))
ans++;
}
}
cout << ans;
return 0;
}