2012年1月21日

POJ 2796 Feel Good 单调栈

摘要: 最近做这方面的题很多,感觉单调栈很是神奇,通过维护一个单调不减的栈,遇到小于栈顶的栈顶元素便出栈,此时跟新结果。这个比RMQ的ST算法要快很多,ST算法要枚举每一个区间(没想到其他做法,可能要dp,反正不会)。这个题关键在于给每一个点找一个最长子序列,使其最小值为其本身,这样扫一遍得到结果。而单调栈正好可以解决这个问题。(这个题大家注意要用long long我被int卡死,干脆全换long long了.......)#include<stdio.h> #include<stdlib.h> #include<algorithm> #include<str 阅读全文

posted @ 2012-01-21 16:10 c语言源码 阅读(378) 评论(0) 推荐(0) 编辑

计算n!末尾所包含0的个数

摘要: 这是一个有趣的问题。例如,5!=120,其末尾所含有的“0”的个数为1;10!= 3628800,其末尾所含有的“0”的个数为2;20!= 2432902008176640000,其末尾所含有的“0”的个数为4。这里先给出其计算公式,后面给出推导过程。令f(x)表示正整数x末尾所含有的“0”的个数,则有: 当0 < n < 5时,f(n!) = 0; 当n >= 5时,f(n!) = k + f(k!), 其中 k = n / 5(取整)。从而可以递归求解。证明: 先证明一个结论。 结论1: 对于n的阶乘n!,其因式分解中,如果存在一个因子“5”,那么它必然对应着n!末尾的一 阅读全文

posted @ 2012-01-21 13:58 c语言源码 阅读(565) 评论(0) 推荐(0) 编辑

导航