给你一个整数 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;
}