上海 网站备案拍照,公司网站怎么关闭,吕梁市建设局网站,电商设计灵感网站本篇博客会讲解力扣“728. 自除数”的解题思路#xff0c;这是题目链接。 对于给定的正整数num#xff0c;我们如何判断它是不是自除数呢#xff1f;根据定义#xff0c;我们只需要把num的每一位数字都取出来#xff0c;判断能不能整除num#xff0c;如果发现num的某一位…
本篇博客会讲解力扣“728. 自除数”的解题思路这是题目链接。 对于给定的正整数num我们如何判断它是不是自除数呢根据定义我们只需要把num的每一位数字都取出来判断能不能整除num如果发现num的某一位数字时0或者无法整除num就说明num不是自除数反之如果发现num的每一位数字都能整除num就说明num是自除数。
那如何把num的每一位都取出来呢这里介绍一种很常见的方法反复进行“mod10除10”即先mod10取出个位数然后再除10把个位数去掉反复进行这样的操作就能取出num的每一位了。
bool isSelfDividing(int num){int tmp num;// 取出每一位while (tmp){int digit tmp % 10;// 包含0或者不能被整除则不是自除数if (digit 0 || num % digit){return false;}tmp / 10;}// 每一位都能整除return true;
}int* selfDividingNumbers(int left, int right, int* returnSize){// 存储[left, right]的自除数int* ret (int*)malloc(sizeof(int) * (right - left 1));int pos 0; // 记录写入的位置for (int i left; i right; i){if (isSelfDividing(i)){ret[pos] i;}}*returnSize pos;return ret;
}总结
解决本题的关键是如何取出任意整数的每一位。我们需要掌握一种常见的方法即反复地mod10除10直到num变成0每次mod10得到的余数就是num的每一位。
感谢大家的阅读