这种类似大整数的处理的问题还是比较常见的,这道题应该是非常简单的版本。
题目的要求是这样的,输入的vector靠前的位置是数字的高位,因此应该先求出长度,然后从后面往前算。维护一个变量保存进位,这我就不说了。结果的vector怎么办呢?因为最后有可能有个总的进位,比如999加1,结果的vector会比输入的多出一位,因此结果还是从前往后存简单一些。最后如果有进位,就多push_back一个1,然...
分类:
其他好文 时间:
2014-05-14 00:31:48
阅读次数:
312
题目来源:POJ 2992 Divisors
题意:。。。
思路:素数分解的唯一性 一个数可以被分解成若干素数相乘 p1^x1*p2^x2*...*pn^xn
根据乘法原理 因子数为 (x1+1)*(x2+1)*...*(xn+1)
不能直接求出组合数 会溢出 也不能把每个乘的数分解因子 这样会超时
C(N,M)=N!/(M!*(N-M)!)
另dp[i][j] 代表为i的阶乘中j因子...
分类:
其他好文 时间:
2014-05-13 09:28:07
阅读次数:
207
二进制相加,本质上就是大整数加法,有关大整数加法我的舍友教过我一个很好的方法,先用一个int数组保存结果,将两个数对应位置相加,全部加完后,再统一处理进位的问题。这个方法同样适用于大整数的乘法。
这个题没什么特别的,注意一下进位别搞错了就行了,还有其实不用像我写的这么麻烦,可以一开始先判断哪个更长一些,交换一下。代码会简洁很多。class Solution {
public:
strin...
分类:
其他好文 时间:
2014-05-13 08:02:00
阅读次数:
239
//方法一
//对每个形如 (A*a+ B)* a^k的数,前面的A 没有意义的,只有B
//才有可能继续被用来作为未来的因子,所以每次只需要保留比a小的B 就够了。代码如下:
#include
#include
#include
using namespace std;
#ifdef ONLINE_JUDGE
#d...
分类:
其他好文 时间:
2014-05-11 13:29:39
阅读次数:
280
题目链接:11038 - How Many O's?
题意:求[a.b]之间,0出现的次数。
思路:一开始一直往数位DP上去想,结果发现挺复杂的。。
把问题先转化为求0 - num的个数,在用到b的个数减去到a的个数
其实只要利用计数的乘法和加法原理,把数字对应的每一位的分成左右两边,利用乘法原理求总数,在用加法原理把所有的总数加起来就是总情况数。那么讨论一下分成两边的情况。举个例子
比...
分类:
其他好文 时间:
2014-05-11 13:16:13
阅读次数:
282
题目链接:1362 - Exploring Pyramids
白书上的例题,思路是对于每个结点,往后遍历分为左右两边子树来考虑,左边的子树为去掉根节点剩下的子树,而右边是要算上根节点的,这样就不会有重复的情况出现,然后根据乘法原理,左右两边情况相乘为总情况数,然后计算这些总和。
f[i][j]表示[i,j]结点的情况种数,那么 f[i][j] = sum{f[i + 1][k - 1] * ...
分类:
其他好文 时间:
2014-05-11 07:02:11
阅读次数:
277
一、计数原理
加法原理:n个方法,每个方法有Pi种方案,那么一共方案数为P1 + P2 + P3... + Pn
乘法原理:一件事情有n个步骤,每个步骤需要pi种方案,那么一共有P1 * P2 * P3 * ... * Pn种方案。
容斥原理:集合A,B,C。|A U B U C| = |A| + |B| + |C| - |AB| - |AC| - |BC| + |ABC|。依次类推。
基...
分类:
其他好文 时间:
2014-05-11 06:28:46
阅读次数:
450
算法描述: 对于整数x、y,用f(x,y)表示x、y的最大公约数。一个数能整除x、y
,则该数必能整除 y、x%y;一个数能整除y、x%y,则该数必能整除x、y(结尾证明)。这样便可将 原问题转化成更小的数的最大公约数,直到其中一个为0。 即
f(x,y) = f(y, x%y) ...
分类:
其他好文 时间:
2014-05-10 02:23:50
阅读次数:
312
暴力除法
题目描述
输入正整数n,按从小到大的顺序输出所有形如abcde/fghij=n的表达式,其中a~j恰好为数字0~9的一个排列,2
输入
输入包括多行,每行一个正整数n,2
输出
针对每个输入的n,从小到大输出该表达式,若没有表达式可以生成,则不输出。
样例输入
62
样例输出
79546/01283=62
94736/01528=62
...
分类:
其他好文 时间:
2014-05-09 21:04:30
阅读次数:
638
由于python中的整数对象记录的整数值是不可变的,所以在名字a的值不断变化的过程中,就就涉及到了多次对象的创建和销毁。所以python为整数对象申请空间进行了两种优化:
优化1:为通用整数对象存储池
优化2:为小整数对象构建特殊的缓冲
PyIntObject分为小整数对象[-5~257)及大整数对象。小整数对象在py启动过程中初始化,从而实现小整数对象的缓存,缓冲中的小整数对象在py运行期间不会被销毁。 大整数对象需要程序员动态申请,对象在运行过程中根据ob_refcnt引...
分类:
编程语言 时间:
2014-05-09 06:24:38
阅读次数:
383