|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- /*
- 自除数 是指可以被它包含的每一位数除尽的数。
- 例如,128 是一个自除数,因为 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。
- 还有,自除数不允许包含 0 。
- 给定上边界和下边界数字,输出一个列表,列表的元素是边界(含边界)内所有的自除数。
- 示例 1:
- 输入:
- 上边界left = 1, 下边界right = 22
- 输出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]
- 注意:
- 每个输入参数的边界满足 1 <= left <= right <= 10000。
- */
复制代码
- bool checkSelfDiv( int data )
- {
- bool ret_val = true;
- int temp = data;
- int leaves = 0;
-
- while(temp!=0)
- {
- leaves = temp % 10;
- if(leaves!=0)
- {
- if(data % leaves != 0 )
- {
- ret_val = false;
- break;
- }
- }
- else
- {
- ret_val = false;
- break;
- }
- temp /= 10;
- }
- return ret_val;
- }
- /**
- * Note: The returned array must be malloced, assume caller calls free().
- */
- int* selfDividingNumbers(int left, int right, int* returnSize)
- {
- int* ret_val = (int*)malloc(sizeof(int)*(right-left+1)) ;
- int validsize = 0 ;
- int i = 0 ;
- if(ret_val == NULL)
- {
- *returnSize = 0;
- return NULL;
- }
- for(i = left ; i <= right ; i++)
- {
- if(checkSelfDiv(i))
- {
- ret_val[validsize] = i;
- validsize++;
- }
- }
- *returnSize = validsize;
- return ret_val;
- }
复制代码
令人感动的结果.
/*
最近提交结果:通过
显示详情
执行用时 :0 ms, 在所有C提交中击败了100.00%的用户
内存消耗 :7.7 MB, 在所有C提交中击败了6.98%的用户
31 / 31 个通过测试用例
状态:通过
执行用时:0 ms
提交时间:3 分钟之前
*/
|
|