第一题 阶乘后的零
![在这里插入图片描述](https://img-blog.csdnimg.cn/59f541a4b66b4efe8388a21f1c34c004.png)
class Solution {
public:
long long factorial(long long n)
{
if(n <= 1)
{
return 1;
}
return (long long)n * factorial(n - 1);
}
int trailingZeroes(int n) {
// overflow 溢出
// long long result = factorial(n);
// cout<< "result: " << result << endl;
// int ans = 0;
// while(result >= 10)
// {
// if(result % 10 == 0)
// {
// ans++;
// result /= 10;
// }
// else
// {
// return ans;
// }
// }
// return ans;
//ben fang fa
int a = 1, ans = 0;
for(int i = 1; i <= n; i++)
{
a *= i;
while(a % 10 == 0)
{
a /= 10;
ans++;
}
a %= 100000;
}
return ans;
//数学
// if(n < 5)
// {
// return 0;
// }
// return n / 5 + trailingZeroes(n / 5);
.....
//return n / 5 + n / 25 + n / 125 + n / 625 + n / 3125;
}
};
第二题 将数字变成零的操作次数
![在这里插入图片描述](https://img-blog.csdnimg.cn/8cf80d429af24232b30d7d435347141f.png)
class Solution {
public:
int numberOfSteps(int num) {
if(num == 0)
{
return 0;
}
if(num % 2 == 0)
{
return numberOfSteps(num / 2) + 1;
}
else
{
return numberOfSteps(num - 1) + 1;
}
}
};
第三题 完全二叉树结点个数
![在这里插入图片描述](https://img-blog.csdnimg.cn/5194897cba51495bacb3cbf5f0c17d98.png)
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
int countNodes(TreeNode* root) {
if(root == nullptr)
return 0;
return countNodes(root->left) + countNodes(root->right) + 1;
}
};
第四题 开幕式焰火
![在这里插入图片描述](https://img-blog.csdnimg.cn/f3db1f7cb34944e3a2c4dceedc12cd8e.png)
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int hash[1024];
void travel(TreeNode * root)
{
if(root)
{
hash[root->val] = 1;
travel(root->left);
travel(root->right);
}
}
int numColor(TreeNode* root) {
int i, sum = 0;
memset(hash, 0, sizeof(hash));
travel(root);
for(i = 1; i <= 1000; i++)
{
if(hash[i])
{
sum++;
}
}
return sum;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/f14b2a78a31e4de5bc589f5c82d5c456.png)