1.19杰哥和数字

★实验任务
杰哥特别喜欢和数字打交道,现在他有一个正整数 N,他想知道有多少个满足要求的正整数 D 存在,要求是 D 是 N 的因子,并且 D 和 N 至少有一位相同。
★数据输入
只有一行,一个正整数 N。(N<=1000000000)。
对于 30%的数据,N<=100
对于 50%的数据,N<=200
对于 100%的数据,N<=1000000000
★数据输出
只有一行,一个整数表示满足要求的数字 D 的个数。
★输入示例
10
输出示例
2

解题代码:

#include<bits/stdc++.h>
using namespace std;
bool dm[11];
void init(int n)
{
    while(n>0)
    {
        dm[n%10]=true;
        n=n/10;
    }
}
int judge(int k)
{
    while(k>0)
    {
        if(dm[k%10])
        {
            return 1;
        }
        k=k/10;
    }
    return 0;
}
int main()
{
    int n;
    int ans=0;
    cin>>n;
    memset(dm,false,sizeof(dm));
    init(n);
    for(int i=1;i<=sqrt(n);i++)
    {
        if(n%i==0)
        {
            if(judge(i)==1)
            ans++;
            if(n!=i*i)
            {
                if(judge(n/i)==1)
                ans++;
            }
        }
    }
    cout<<ans<<endl;
    return 0;
}
posted @ 2022-09-13 20:40  Linkway  阅读(76)  评论(0)    收藏  举报