杰哥和数字

★实验任务

杰哥特别喜欢和数字打交道,现在他有一个正整数 N,他想知道有多少个满足要求的正整数 D 存在,要求是 D 是 N 的因子,并且 D 和 N 至少有一位相同。

★数据输入

只有一行,一个正整数 N。(N<=1000000000)。

对于 30%的数据,N<=100

对于 50%的数据,N<=200

对于 100%的数据,N<=1000000000

★数据输出

只有一行,一个整数表示满足要求的数字 D 的个数。

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
	int n,d,i,j=0;
	cin>>n;
	int num[11]={0};
	int n_l=n;
	while(n_l)
	{
		num[n_l%10]++;
		n_l=n_l/10;
	}
	for(i=1;i<=sqrt(n);i++)
	{
		if(n%i==0)
		{
			int num1[11]={0};
			n_l=i;
			while(n_l)
			{
				num1[n_l%10]++;
				n_l=n_l/10;
			}
			for(j=0;j<11;j++)
			{
				if(num[j]!=0&&num1[j]!=0)
				{
					d++;break;
				}
			}
			if(i!=sqrt(n))
			{
				int num2[11]={0};
				n_l=n/i;
				while(n_l)
				{
					num2[n_l%10]++;
					n_l=n_l/10;
				}
				for(j=0;j<11;j++)
				{
					if(num[j]!=0&&num2[j]!=0)
					{
						d++;break;
					}
				}
			}
		}
	
	}
	cout<<d;
	return 0;
}

 

posted @ 2022-09-04 17:07  墨燃云  阅读(93)  评论(0编辑  收藏  举报