给你一个整数 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<stdio.h>

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;
    }

猜你喜欢

转载自blog.csdn.net/ainuliba/article/details/134064366
num