二叉树的层序遍历 N!结尾0的个数
来源:互联网 发布:看图猜字网络世界 编辑:程序博客网 时间:2024/05/21 09:00
二叉树的层序遍历
void _LevelOrder(Node *pRoot) { Node *pCur = pRoot; queue<Node *> q; q.push(pCur); while (!q.empty()) { Node *pTop = q.front(); cout << pTop->_data << " "; q.pop(); if (pTop->_pLeft) q.push(pTop->_pLeft); if (pTop->_pRight) q.push(pTop->_pRight); } }
N!结尾0的个数
首先考虑,如果N的阶乘为K和10的M次方的乘积,那么N!末尾就有M的0。如果将N的阶乘分解后,那么 N的阶乘可以分解为: 2的X次方,3的Y次方,5的Z次方,.....的成绩。由于10 = 2 * 5,所以M只能和X和Z有关,每一对2和5相乘就可以得到一个10,于是M = MIN(X,Z),不难看出X大于Z,因为被2整除的频率比被5整除的频率高的多。所以可以把公式简化为M=Z. 由上面的分析可以看出,只要计算出Z的值,就可以得到N!末尾0的个数 就是要计算1-n的因式分解中5的指数。然后求和。 如25的阶乘有6个0,25*24==600,有两个0,#include<iostream>using namespace std;int getNum(int n){ int num = 0; int i, j; for (i = 1; i <= n; i++) { j = i; while (j % 5 == 0) { num++; j /= 5; } } return num;}int getNum2(int n){ int ret = 0; while (n) { ret += n / 5; n /= 5; }}int main(){ int n; while (cin >> n) { cout << getNum(n) << endl; } return 0;}
阅读全文
0 0
- 二叉树的层序遍历 N!结尾0的个数
- N!结尾0的个数
- 二叉树的层序遍历与一个数阶乘中0的个数
- 获取二叉树第n层的节点个数
- day09之N的阶乘N!末尾有多少个0 + 二叉树的层序遍历
- 【每日一题-9】层序遍历与N!后的0的个数
- 结尾0的个数
- 结尾0的个数
- 结尾0的个数
- Zero---求N的阶乘结尾0的个数
- 计算n!中结尾零的个数
- 计算n!中结尾零的个数
- 二叉树的前、中、后序遍历(递归和非递归)、层序遍历、深度、叶子节点个数
- 二叉树的层序遍历
- 二叉树的层序遍历
- 二叉树的层序遍历
- 二叉树的层序遍历
- 二叉树的层序遍历
- Android入门学习笔记整理(八)
- 关于cookie中文乱码问题
- PAT a1101题解
- ABAQUS二次开发-UMAT入门
- PAT a1102题解
- 二叉树的层序遍历 N!结尾0的个数
- ElasticSearch学习笔记(三)logstash安装和logstash-input-jdbc插件
- svg学习笔记(一):写在前面的话
- friendly-errors-webpack-plugin webpack插件
- 欢迎使用CSDN-markdown编辑器
- vue-cli 的功能注释url
- opencv:线性和非线性滤波
- OPENCV裁剪图片
- 图片加载框架-Picasso