
高精度计算
NIL_
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
大整数加法
思路: //将字符数组倒放进INT数组中 //循环{ 逐位相加, 判断进位(>10,取余数,后一位+1) } //从int数组最后往前输出,通过一个FLAG来控制前导0 #include<stdio.h> #include<string.h> int main(){ char str1[250]; char str2[250]; int num1[250]; ...原创 2018-11-11 09:57:09 · 6049 阅读 · 0 评论 -
大整数乘法
思路 //string倒放到INT数组 //ans[i+j] = num1[i] * num2[j] *核心 for(int i=0;i<len1;i++){//num1的每一为乘Num2的每一位 for(j=0;j<len2;j++){ ans[i+j]+=num1[i]*num2[j]; } } //处理进位 //处理输出结果 #include<stdio....原创 2018-11-11 10:00:24 · 573 阅读 · 0 评论 -
2951:浮点数求高精度幂
思路 1.将浮点数,记录小数点位置,并去除小数点变成整数(例如99.99===>9999,小数点位置=2) 2.使用快速幂算法 计算整数的幂 void mul(int *a,int *b){ int temp,c[250]; memset(c,0,sizeof(c)); for(int i=0;i<125;i++){ int nC=0; for(int j=0;j<...原创 2018-11-13 16:38:21 · 1149 阅读 · 2 评论 -
大整数除法
思路 1.不断做减法 7546 / 23 开始 商为0, 先减去23的一百倍,也就是2300,发现能减3次,余下645,于是商增加3*100然后用645-23的十倍,能减2次,余下186,商增加20,最后用186-23,能减8次,最后商为328 //减完 从后数起第一个不为0的数是num1的长度 //len1<len2 //len1=len2 num1[len1]<num2[len...原创 2018-11-11 19:23:07 · 1987 阅读 · 2 评论 -
2706:麦森数
快速幂 a^b 如果直接计算,需要计算b次乘法,也就是 O(n),但是可以把b 拆成二进制形式,例如b=11 (11的二进制是1011,11 = 2³×1 + 2²×0 + 2¹×1 + 2º×1) a11 = a(2³×1+2²×0+2¹×1+2º×1) 也就是a2^0 *a2^1*a2^3 快速幂模板代码 while(p!=0){ if(p&1) mul(ans,nB...原创 2018-11-12 15:54:00 · 244 阅读 · 0 评论