银河

SKYIV STUDIO

  博客园 :: 首页 ::  ::  :: 订阅 订阅 :: 管理 ::
  105 随笔 :: 2 文章 :: 751 评论 :: 22 Trackbacks

2008年7月16日 #

     摘要: Timus 1057. Amount of degrees 要求计算指定范围内能够由 K 个不同的 B 的幂次之和组成的整数的个数。这个程序的关键在于第 41 到 54 行的 GetNth 方法,该方法返回满足以下条件的第 N 个 B 进制整数:该整数中有 K 个 1,其余数字全部都是 0。  阅读全文
posted @ 2008-08-01 21:51 银河 阅读(710) | 评论 (2)编辑

     摘要: 前几天,我发表了一篇随笔:“BigArithmetic - 提供任意精度的算术运算的静态类”。现在,让我们使用 BigArithmetic 类来计算圆周率。我们需要一个计算 π 的分析算法。有用的算法是二次收敛的,即每一次迭代使有效位数增加一倍。计算 π 的二次收敛算法是基于 ACM 法(算术几何平均法)。  阅读全文
posted @ 2008-07-29 21:34 银河 阅读(975) | 评论 (6)编辑

     摘要: Timus 1005. Stone pile 要求将若干石头分为两堆使其重量差最小。这道题是说,给你一堆石头,总数在 1 到 20 之间,每个石头的重量在 1 到 100,000 之间。要求你将这堆石头分成两堆,使这两堆石头的重量差最小,并输出这个重量差。  阅读全文
posted @ 2008-07-26 10:04 银河 阅读(700) | 评论 (3)编辑

     摘要: 我在“浅谈 BigInteger”的随笔中实现了一个 Skyiv.Numeric.BigInteger 类,那时乘法是使用常规的 O(N2) 的算法,所以比 .NET Framework 3.5 Base Class Library 中的 System.Numeric.BigInteger 类稍慢,后者的乘法是使用 Karatsuba 算法,其时间复杂度约为 O(N1.585)。  阅读全文
posted @ 2008-07-25 22:07 银河 阅读(865) | 评论 (13)编辑

     摘要: 在上一篇随笔“使用快速傅里叶变换计算大整数乘法”中,已经讲述了使用快速傅里叶变换计算大整数乘法的原理。在这一篇随笔中,我们就使用快速傅里叶变换来实现一个提供任意精度的算术运算的静态类:BigArithmetic。  阅读全文
posted @ 2008-07-25 00:06 银河 阅读(1254) | 评论 (7)编辑

     摘要:

我们知道,两个 N 位数字的整数的乘法,如果使用常规的算法,时间复杂度是 O(N2)。然而,使用快速傅里叶变换,时间复杂度可以降低到 O(N logN loglogN)。

  阅读全文
posted @ 2008-07-23 22:10 银河 阅读(1415) | 评论 (30)编辑

     摘要: Timus 1603. Erudite 要求解一个字谜。这个题目首先给出一个 4x4 的字谜,然后给出许多单词,要求你判断这些单词是否能够由前面的字谜组成。规则是,你能够在字谜中上下左右行走,也能够拐弯,但是已经使用过的字母不允许再用。  阅读全文
posted @ 2008-07-16 20:47 银河 阅读(1021) | 评论 (0)编辑