摘要:
题意是给定一个大数,这个数是由两个素数相乘得到的,现在问你这个大数的分解是否存在一个素数小于给定的数。由于这个给定的数L小于10^6,所以我们就可以打表到10^6,最好打的大一点(比10^6大的最小的素数即可),这样可以方便跳出循环。接下来,对于每一个数,我们直接对其小于L的所有素数进行一次试除,看是否余数为零。这里用到了一个大数取模的运算,一个大数对一个int型的数。过程是这样的,我们可以把一个数(abc...xyz)看作是10*(abc...xy)+z --> 10*(10*(abc...x)+y)+z,一直这样下去,我们在从最里面取模开始即可。代码如下:#include <c 阅读全文
posted @ 2012-09-12 20:22
沐阳
阅读(386)
评论(0)
推荐(0)
摘要:
注意输出结果也是在32位无符号内就可以了。代码如下:#include <cstdlib>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;typedef long long Int64;Int64 C(Int64 a, Int64 b) { Int64 ret = 1; for (int i = 0; i < a; ++i) { ret *= (b-i); ret /= (i+1); } return ret;}int main() { .. 阅读全文
posted @ 2012-09-12 07:40
沐阳
阅读(192)
评论(0)
推荐(0)
摘要:
给定两个数,这两个数的长度都不超过6位数,然后求后一个数被怎样的分割能使得其和值最接近前一个数,其实这个问题就相当于在后一个数中进行插板而已。通过状态压缩来枚举隔板即可。代码如下:#include <iostream>#include <cstdlib>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <string>#include <map>#include <queue># 阅读全文
posted @ 2012-09-12 07:13
沐阳
阅读(246)
评论(0)
推荐(0)