Brave Balloonists
摘要:题目来自:http://acm.timus.ru/problem.aspx?space=1&num=1049题目的大意是: 输入10个整数:a1,a2,...., a10. 假设他们的乘积:k = a1*a2*....*a10. 求k的公约数的个数N的个位数上是什么数字。 解这个题目的关键在于,怎样求出一个数的公约数的个数.(如6的公约数的个数为4(1,2,3,6)). 很多人一看,很简单啊,直接循环1~k,总可以求出来。 这话虽没错,但只会使蛮力,不懂取巧,除了让自己的形象看起来更像一头牛,通常也会遇到效率上的瓶颈。 这里输入的10个数,有可能会很大,因此直接暴力搜索约数的个数是不行
阅读全文
posted @
2013-03-31 16:34
twoon
阅读(417)
推荐(0) 编辑
google breakpad for linux(2)
摘要:(1) overview.上图简述了整个breakpad工作的基本流程: 1)程序编译完后,先用工具事先把程序的相关debug信息dump下来(to symbol file)。 这些dump下来的东西包含了一些符号与源码的相关信息,如各个符号在程序中对应的地址等。 有了它,breadpad经过相关处理,使得用户通过一个地址就能找出这个地址对应的是变量,还是函数等。 2)把符号dump出来后,程序就可以pstrip一下,把debug信息去除,然后发布程序。 3)程序在运行的过程中,如果发生了崩溃,程序就会进入breakpad的异常处理,这个异常处理会把当前程序的上下文,栈的内容,线程的信息等..
阅读全文
posted @
2013-03-20 22:00
twoon
阅读(1840)
推荐(0) 编辑
和最大的连续子数组
摘要:求一个数组中,和最大的子数组,是一个比较经典的题目,《算法导论》中有一个用分治的经典解法,时间复杂度可以做到O(nlgn).《编程之美》,《编程玑珠》中都有讨论这个问题,其中一个动态规划的做法非常精巧,思路很赞,时间复杂度也优化到了O(n). 上面提到的两种解法对分治法,动态规划很有启发性,是非常好的练习题目。(1)分治法: 关键的思想在于把大题目转化为对多个小题目的求解。 考虑,如果我们把数组arr[],分成大小相等的两半:arr_a与arr_b,那么当前数组的最大子和sub, 只有三种可能: 1)sub 完全在 arr_a中。 2)sub 完全在arr_b中。 3)sub 横跨arr...
阅读全文
posted @
2013-03-20 11:06
twoon
阅读(1409)
推荐(0) 编辑