算法设计与分析 1.3 杰哥和数字
题目描述
杰哥特别喜欢和数字打交道,现在他有一个正整数X,他想知道有多少个满足要求的正整数D存在,要求是D是X的因子,并且D和X至少有一位相同。
输入格式
只有一行,一个正整数X。
对于30%的数据,X<=100。
对于50%的数据,X<=200。
对于100%的数据,X<=1000000000。
输出格式
只有一行,一个整数表示满足要求的数字D的个数。
样例输入
10
样例输出
2
参考代码
#include <iostream>
int test[10];
int main()
{
long x, n;
int num = 0;
std::cin >> x;
for (int i = 0; i < 10; i++) {
test[i] = 0;
}
n = x;
while (n > 0) {
test[n % 10] = 1;
n /= 10;
}
for (int i = 1; i * i <= x; i++) {
if (x % i == 0) {
int j = x / i;
n = j;
while (n > 0) {
if (test[n % 10] == 1) {
num++;
break;
}
n /= 10;
}
if(i==j) continue;
n = i;
while (n > 0) {
if (test[n % 10] == 1) {
num++;
break;
}
n /= 10;
}
}
}
std::cout << num;
}