给你一个整数 num ,返回 num 中能整除 num 的数位的数目

给你一个整数 num ,返回 num 中能整除 num 的数位的数目。
如果满足 nums % val == 0 ,则认为整数 val 可以整除 nums 。
示例 1:
输入:num = 7
输出:1
解释:7 被自己整除,因此答案是 1 。
示例 2:
输入:num = 121
输出:2
解释:121 可以被 1 整除,但无法被 2 整除。由于 1 出现两次,所以返回 2 。
示例 3:
输入:num = 1248
输出:4
解释:1248 可以被它每一位上的数字整除,因此答案是 4 。
提示:
1 <= num <= 10^9
num 的数位中不含 0

#include

int countDigits(int num);
int main()
{
	int num;
	scanf("%d",&num);
	printf("num=%d\n",num);
	printf("%d 次",countDigits(num));
}

int countDigits(int num){
	int numCopy = num, count = 0,array[10] = {0};
	 
	if(numCopy<10)
		if(numCopy%numCopy == 0)
			count++;
	if(numCopy>10)
	{
		while (numCopy){

			array[numCopy%10]++;	
			if(num%(numCopy%10) == 0){
				count++;
				printf("array = %d %d\n",numCopy%10,num%(array[numCopy%10]));
			}
			else
				count = count;
			numCopy /= 10;
		}
	}
	return  count;
}
//另一种方式
int countDigits(int num) {
        int tmp;
        int nums[10]={};
        for(tmp = num;tmp!=0;tmp/=10)
            nums[tmp%10]++;
        tmp=0;
        for(int temp=0;temp<10;temp++)
            if(nums[temp]&&num%temp==0)
            //nums[temp]不等于 0 成立
                tmp+=nums[temp];
        return tmp;
    }

你可能感兴趣的:(算法,数据结构,c语言)