大数加法、乘法、及阶乘源代码

Chaser_Master 2010-04-18 05:18:51
我是新手,不理解,求好心人帮忙指点下,谢谢
...全文
237 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hello_Joey 2010-04-19
  • 打赏
  • 举报
回复
友情帮定
soswaidao 2010-04-18
  • 打赏
  • 举报
回复
友情帮顶,友情帮顶
野男孩 2010-04-18
  • 打赏
  • 举报
回复
基本思路就是用数组来记录数字来解决int长度不够表达的问题。

google了一个,没测试:


#include<iostream>
using namespace std;
#define MAX 10000
int result[MAX]={0};
char a[MAX/2];
char b[MAX/2];

template<typename Type>
void Display(Type s[])
{
cout<<s<<endl;
}
//将字符数组逆序
void Reverse(char s[],int length)
{
char mid[MAX];
for(int i=0;i<length;i++)
{
mid[length-i-1]=s[i];
}
mid[length]='\0';
strcpy(s,mid);
}
//将result数组调整,因为相乘时没有进位,比如result[i]=35
void Schule(int length)
{
int i=0;
for(i=0;i<length;i++)
{
if(result[i]>=10)
{
int temp;
temp=result[i];
result[i]=temp%10;
result[i+1]+=temp/10;
}
}
}
/*相乘,基本思想是:将两个大数存储在字符数组中,
乘数的一位分别乘于被乘数的每一位,将结果保存到result数组中
同时注意对应位的加和进位
*/
int Multi(char s1[],char s2[],int lens1,int lens2)
{
int i,j;
//char mid[MAX];
for(i=0;i<=lens1-1;i++)
{
int temp01,temp02,temp03;
temp01=s1[i]-'0';
for(j=0;j<=lens2-1;j++)
{
temp02=s2[j]-'0';
temp03=temp01*temp02;
result[i+j]+=temp03%10;
result[i+j+1]+=temp03/10;
}
}
return 0;
}
void main()
{
while(true)
{
int lens1,lens2,i;
cin>>a;
lens1=strlen(a);
cin>>b;
lens2=strlen(b);
a[lens1]='\0';
b[lens2]='\0';
Display(a);
cout<<endl;
Display(b);
cout<<endl;
Reverse(a,lens1);
Display(a);
Reverse(b,lens2);
Display(b);
Multi(a,b,lens1,lens2);
Schule(lens1+lens2+1);
if(result[lens1+lens2-1]!=0)cout<<result[lens1+lens2-1];
for(i=lens1+lens2-2;i>=0;i--)
{
cout<<result[i];
}
cout<<endl;
for(i=0;i<=lens1+lens2+1;i++)
result[i]=0;
}
}
Chaser_Master 2010-04-18
  • 打赏
  • 举报
回复
呵呵,,谢谢啦!!
acdbxzyw 2010-04-18
  • 打赏
  • 举报
回复
ForestDB 2010-04-18
  • 打赏
  • 举报
回复
帮顶。
目录 一.数论 4 1.乘最后非零位 4 2. 模线性方程(组) 4 3. 素数表 6 4. 素数随机判定(miller_rabin) 6 5. 质因数分解 7 6. 最大公约数欧拉函数 8 二.图论_匹配 9 1. 二分图最大匹配(hungary邻接表形式) 9 2. 二分图最大匹配(hungary邻接表形式,邻接阵接口) 10 3. 二分图最大匹配(hungary邻接阵形式) 10 4. 二分图最大匹配(hungary正向表形式) 11 5. 二分图最佳匹配(kuhn_munkras邻接阵形式) 11 6. 一般图匹配(邻接表形式) 12 7. 一般图匹配(邻接表形式,邻接阵接口) 13 8. 一般图匹配(邻接阵形式) 14 9. 一般图匹配(正向表形式) 15 三.图论_生成树 16 1. 最小生成树(kruskal邻接表形式) 16 2. 最小生成树(kruskal正向表形式) 17 3. 最小生成树(prim+binary_heap邻接表形式) 19 4. 最小生成树(prim+binary_heap正向表形式) 20 5. 最小生成树(prim+mapped_heap邻接表形式) 21 6. 最小生成树(prim+mapped_heap正向表形式) 22 7. 最小生成树(prim邻接阵形式) 23 8. 最小树形图(邻接阵形式) 24 四.图论_网络流 25 1. 上下界最大流(邻接表形式) 25 2. 上下界最大流(邻接阵形式) 26 3. 上下界最小流(邻接表形式) 27 4. 上下界最小流(邻接阵形式) 29 5. 最大流(邻接表形式) 30 6. 最大流(邻接表形式,邻接阵接口) 31 7. 最大流(邻接阵形式) 32 8. 最大流无流量(邻接阵形式) 32 9. 最小费用最大流(邻接阵形式) 33 五. 图论_最短路径 34 1. 最短路径(单源bellman_ford邻接阵形式) 34 2. 最短路径(单源dijkstra_bfs邻接表形式) 35 3. 最短路径(单源dijkstra_bfs正向表形式) 35 4. 最短路径(单源dijkstra+binary_heap邻接表形式) 36 5. 最短路径(单源dijkstra+binary_heap正向表形式) 37 6. 最短路径(单源dijkstra+mapped_heap邻接表形式) 38 7. 最短路径(单源dijkstra+mapped_heap正向表形式) 39 8. 最短路径(单源dijkstra邻接阵形式) 40 9. 最短路径(多源floyd_warshall邻接阵形式) 40 六. 图论_连通性 41 1. 无向图关键边(dfs邻接阵形式) 41 2. 无向图关键点(dfs邻接阵形式) 42 3. 无向图块(bfs邻接阵形式) 43 4. 无向图连通分支(bfs邻接阵形式) 43 5. 无向图连通分支(dfs邻接阵形式) 44 6. 有向图强连通分支(bfs邻接阵形式) 44 7. 有向图强连通分支(dfs邻接阵形式) 45 8. 有向图最小点基(邻接阵形式) 46 七. 图论_应用 46 1.欧拉回路(邻接阵形式) 46 2. 前序表转化 47 3. 树的优化算法 48 4. 拓扑排序(邻接阵形式). 49 5. 最佳边割集 50 6. 最佳顶点割集 51 7. 最小边割集 52 8. 最小顶点割集 53 9. 最小路径覆盖 55 八. 图论_NP搜索 55 1. 最大团(n小于64)(faster) 55 2. 最大团 58 九. 组合 59 1. 排列组合生成 59 2. 生成gray码 60 3. 置换(polya) 61 4. 字典序全排列 61 5. 字典序组合 62 6. 组合公式 62 十. 数值计算 63 1. 定积分计算(Romberg) 63 2. 多项式求根(牛顿法) 64 3. 周期性方程(追赶法) 66 十一. 几何 67 1. 多边形 67 2. 多边形切割 70 3. 浮点函数 71 4. 几何公式 76 5. 面积 78 6. 球面 79 7. 三角形 79 8. 三维几何 81 9. 凸包(graham) 89 10. 网格(pick) 91 11. 圆 92 12. 整数函数 94 13. 注意 96 十二. 结构 97 1. 并查集 97 2. 并查集扩展(friend_enemy) 98 3. 堆(binary) 98 4. 堆(mapped) 99 5. 矩形切割 99 6. 线段树 100 7. 线段树扩展 102 8. 线段树应用 105 9. 子段和 105 10. 子阵和 105 十三. 其他 106 1. 分数 106 2. 矩阵 108 3. 日期 110 4. 线性方程组(gauss) 111 5. 线性相关 113 十四. 应用 114 1. joseph 114 2. N皇后构造解 115 3. 布尔母函数 115 4. 第k元素 116 5. 幻方构造 116 6. 模式匹配(kmp) 118 7. 逆序对数 118 8. 字符串最小表示 119 9. 最长公共单调子序列 119 10. 最长子序列 120 11. 最大子串匹配 121 12. 最大子段和 122 13. 最大子阵和 123 常用源代码 包括很多经典算法 数学问题: 1.精度计算——大数乘 2.精度计算——乘法大数乘小数) 3.精度计算——乘法大数大数) 4.精度计算——加法 5.精度计算——减法 6.任意进制转换 7.最大公约数、最小公倍数 8.组合序列 9.快速傅立叶变换(FFT) 10.Ronberg算法计算积分 11.行列式计算 12.求排列组合数 字符串处理: 1.字符串替换 2.字符串查找 3.字符串截取 计算几何: 1.叉乘法求任意多边形面积 2.求三角形面积 3.两矢量间角度 4.两点距离(2D、3D) 5.射向法判断点是否在多边形内部 6.判断点是否在线段上 7.判断两线段是否相交 8.判断线段与直线是否相交 9.点到线段最短距离 10.求两直线的交点 11.判断一个封闭图形是凹集还是凸集 12.Graham扫描法寻找凸包 数论: 1.x的二进制长度 2.返回x的二进制表示中从低到高的第i位 3.模取幂运算 4.求解模线性方程 5.求解模线性方程组(中国余数定理) 6.筛法素数产生器 7.判断一个数是否素数 图论: 1.Prim算法求最小生成树 2.Dijkstra算法求单源最短路径 3.Bellman-ford算法求单源最短路径 4.Floyd算法求每对节点间最短路径 排序/查找: 1.快速排序 2.希尔排序 3.选择法排序 4.二分查找 数据结构: 1.顺序队列 2.顺序栈 3.链表 4.链栈 5.二叉树

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧