ACM_高精度
LzyRapX
Just For Fun .
展开
-
高精度进制转换
高精度进制转换传入参数约定:传入第一个参数为string类型,第二第三均为int型,返回值为string类型算法思想:模拟手工进制转换。算法复杂度:o(n^2)。#include#includeusing namespace std;//将字符串表示的10进制大整数转换为m进制的大整数//并返回m进制大整数的字符串bool judge(string s) //判原创 2016-03-18 23:45:00 · 2811 阅读 · 0 评论 -
高精度求平方根
高精度求平方根,思路就是二分+高精度加减乘除法设数的长度为n,则需二分log(2,10^n)次即n*log(2,10) 约等于n*3.3,由于数的长度为n,朴素高精度乘法复杂度为o(n^2)。故朴素算法求解高精度平方根复杂度为O(n^3)当然,你也可以用FFT优化下高精度乘法。下面的代码实现了求大整数平方根的整数部分。#include#include#include#incl原创 2016-03-18 23:47:24 · 3022 阅读 · 1 评论 -
hduoj 1002 A + B Problem II(大数加法)
A + B Problem IITime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 301097 Accepted Submission(s): 58056Problem DescriptionI have a v原创 2016-03-31 22:25:12 · 1527 阅读 · 0 评论 -
HDU 1212 Big Number (大数取模)
Big NumberTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 7103 Accepted Submission(s): 4898Problem DescriptionAs we know, Big Numbe原创 2016-07-14 15:01:18 · 493 阅读 · 0 评论 -
HDU 1134 Game of Connections (高精度卡特兰数)
Game of ConnectionsTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4263 Accepted Submission(s): 2480Problem DescriptionThis is a sm原创 2016-10-23 00:13:04 · 844 阅读 · 0 评论 -
Problem 16 Power digit sum (高精度幂)
Power digit sumProblem 16215 = 32768 and the sum of its digits is 3 + 2 + 7 + 6 + 8 = 26.What is the sum of the digits of the number 21000?Answer:1366原创 2016-10-26 23:25:32 · 693 阅读 · 0 评论 -
PE 65 Convergents of e (e的无限逼近)
Convergents of eProblem 65The square root of 2 can be written as an infinite continued fraction.√2 = 1 +12 +12 +12 +原创 2016-11-07 22:38:02 · 1115 阅读 · 0 评论 -
Problem 20 Factorial digit sum (阶乘数和)
Problem 20n! means n × (n − 1) × ... × 3 × 2 × 1For example, 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800,and the sum of the digits in the number 10! is 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27.Find the原创 2016-10-27 22:21:46 · 487 阅读 · 0 评论 -
Problem 25 1000-digit Fibonacci number (高精度fibonacci)
1000-digit Fibonacci numberProblem 25The Fibonacci sequence is defined by the recurrence relation:Fn = Fn−1 + Fn−2, where F1 = 1 and F2 = 1.Hence the first 12 terms will be:F1 = 1F原创 2016-10-28 22:14:55 · 554 阅读 · 0 评论 -
历届试题 矩阵翻硬币(数学题,大数开根)
问题描述 小明先把硬币摆成了一个 n 行 m 列的矩阵。 随后,小明对每一个硬币分别进行一次 Q 操作。 对第x行第y列的硬币进行 Q 操作的定义:将所有第 i*x 行,第 j*y 列的硬币进行翻转。 其中i和j为任意使操作可行的正整数,行号和列号都是从1开始。 当小明对所有硬币都进行了一次 Q 操作后,他发现了一个奇迹——所有硬币均为正面朝上。 小明想知道最开始有多少枚硬币是反面朝上的原创 2017-03-22 14:56:13 · 1200 阅读 · 0 评论 -
ACdream 1667 调皮的数一 (大数+dp)
题目链接: ACdream 1667题解: 很显然是dp题dp题。 当时状态可以由左边的跑道,右边的跑道,跑道不变这三种状态转换而来。 设dp[i][j]dp[i][j]表示人跑了ii 步跑到jj 跑道的方案数。 那么,dp[i][j]=dp[i−1][j+1]+dp[i−1][j]+dp[i−1][j−1]dp[i][j] = dp[i-1][j+1]+dp[i-1][j]+dp[i-1原创 2017-06-04 21:47:26 · 457 阅读 · 0 评论 -
高精度GCD
高精度GCD传入参数约定:传入参数均为string类型,返回值为string类型算法思想:高精度加减乘除的运用。算法复杂度:已无法估计。#include#include#includeusing namespace std;const int L=110;string add(string a,string b){ string ans; int原创 2016-03-18 23:43:29 · 1579 阅读 · 0 评论 -
高精度幂
高精度幂传入参数约定:传入第一参数为string类型,第二个为int型,返回值为string类型算法思想:FFT高精乘+二分求幂。算法复杂度:o(n*log(n)*log(m)).#include #include #include #include #include #include #include #include #include using namesp原创 2016-03-18 23:40:58 · 503 阅读 · 0 评论 -
N!高精度
N! 高精度算法。核心思路:将大数拆分开存进数组里面,Hdu 1042这题的要求是 09! = 362880 ,要将3存进一个数组,62880存进一个数组。10!= 3628800 ,此时右数组内容变为628800大于100000了,右边依然拆分进位,把6进位,保留28800 。左数组也乘以10,然后加上进位,即3*10+6=36 。所以二次拆分进位之后原创 2016-03-17 23:02:24 · 471 阅读 · 0 评论 -
高精度模板
#include #include #include #include #include using namespace std;#define maxsize 1005//建立一个结构体struct hp{ int len;//用来存储转化为整型后的长度 int s[maxsize+1];//用来存储每一位};//copy 函数把b copy给avoi转载 2016-03-17 23:05:54 · 540 阅读 · 0 评论 -
高精度加法
高精度加法传入参数约定:传入参数均为string类型,返回值为string类型算法思想:倒置相加再还原。算法复杂度:o(n).#include#include#includeusing namespace std;const int L=110;string add(string a,string b)//只限两个非负整数相加{ string ans;原创 2016-03-18 23:17:48 · 491 阅读 · 0 评论 -
高精度减法
高精度减法传入参数约定:传入参数均为string类型,返回值为string类型算法思想:倒置相减再还原。算法复杂度:o(n).#include#include#includeusing namespace std;const int L=110;string sub(string a,string b)//只限大的非负整数减小的非负整数{ str原创 2016-03-18 23:22:45 · 708 阅读 · 0 评论 -
高精度乘法
高精度乘法1)高精度乘高精度的朴素算法传入参数约定:传入参数均为string类型,返回值为string类型算法思想:倒置相乘,然后统一处理进位,再还原。算法复杂度:o(n^2).#include#include#includeusing namespace std;const int L=110;string mul(string a,string b)//高原创 2016-03-18 23:28:38 · 604 阅读 · 0 评论 -
高精度乘高精度FFT优化算法
高精度乘高精度FFT优化算法传入参数约定:传入参数均为string类型,返回值为string类型算法思想:将两个高精度乘数每个数位上的数视为多项式对应的系数,用o(n*log(n))的复杂度转成点值形式,再利用o(n)的复杂度相乘,最后对点值进行差值,用o(n*log(n))的复杂度还原成多项式的形式,即原来的形式。算法复杂度:o(n*log(n)).#include #原创 2016-03-18 23:32:47 · 4525 阅读 · 0 评论 -
高精度乘单精度
高精度乘单精度传入参数约定:传入第一个参数为string类型,,第二个参数为int型,返回值为string类型算法思想:倒置相乘,然后统一处理进位,再还原。算法复杂度:o(n).#include#include#includeusing namespace std;const int L=100005;int na[L];string mul(strin原创 2016-03-18 23:33:53 · 2000 阅读 · 0 评论 -
高精度除高精度
高精度除法1)高精度除高精度传入参数约定:传入第一第二个参数均为string类型,第三个为int型,返回值为string类型算法思想:倒置,试商,高精度减法。算法复杂度:o(n^2).#include#include#includeusing namespace std;const int L=110;int sub(int *a,int *b,int La,int原创 2016-03-18 23:30:36 · 2424 阅读 · 0 评论 -
高精度除单精度
高精度除单精度传入参数约定:传入第一参数为string类型,第二个为int型,返回值为string类型算法思想:模拟手工除法。算法复杂度:o(n).#include#includeusing namespace std;string div(string a,int b)//高精度a除以单精度b{ string r,ans; int d=0; if(原创 2016-03-18 23:36:58 · 3246 阅读 · 0 评论 -
高精度取模
高精度取模1)高精度对高精度取模(以在高精度除高精度中实现,此处不再赘述)2)高精度对单精度取模传入参数约定:传入第一参数为string类型,第二个为int型,返回值为string类型算法思想:利用(a+b)%c=a%c+b%c。算法复杂度:o(n).#include#includeusing namespace std;int mod(string a,in原创 2016-03-18 23:38:25 · 7670 阅读 · 2 评论 -
高精度阶乘
高精度阶乘传入参数约定:传入参数为int型,返回值为string类型算法思想:高精度乘单精度的简单运用。算法复杂度:o(n^2).#include#include#includeusing namespace std;const int L=100005;int a[L];string fac(int n){ string ans; if(n=原创 2016-03-18 23:39:39 · 1581 阅读 · 0 评论 -
斯特林公式 ——Stirling公式(取N阶乘近似值)
斯特灵公式是一条用来取n阶乘近似值的数学公式。一般来说,当n很大的时候,n阶乘的计算量十分大,所以斯特灵公式十分好用。从图中可以看出,即使在n很小的时候,斯特灵公式的取值已经十分准确。 公式为: 从图中看出,对于足够大的整数n,这两个数互为近似值。更加精确地:原创 2016-04-13 18:51:01 · 89134 阅读 · 5 评论