【模版】大数乘法、加法模版
2013-12-28 23:15
337 查看
啦啦啦,模版终于写出来了,以后大数的乘加法再也不担心了。
介于只对自己的个别数据进行了测试,所以还是把模版晒出来吧,大家一起试试,有问题一定要第一时间反馈啊!!
还有,那些逃避指针的小伙伴们,咳咳,我就不说什么了,反正打死你们也不相信我没用指针。
介于只对自己的个别数据进行了测试,所以还是把模版晒出来吧,大家一起试试,有问题一定要第一时间反馈啊!!
还有,那些逃避指针的小伙伴们,咳咳,我就不说什么了,反正打死你们也不相信我没用指针。
//大数问题之大数(250位)乘法、加法模版 #include<stdio.h> #include<string.h> void hs(char *s,long long *n); //由字符串变为整形数组 void pr(long long *n,int num); //打印整形数组(大数) char sn1[260]; //输入第一个大数 char sn2[260]; //输入第二个大数 long long n1[70]; //保存第一个大数 long long n2[70]; //保存第二个大数 long long en[150]; //保存最后结果 int main() { int i,k; while (~scanf ("%s%s",sn1,sn2)) { //乘法特殊情况 if (sn1[0] == '0' || sn2[0] == '0') { printf ("0\n"); continue; } //初始化 memset (n1,0,sizeof n1); memset (n2,0,sizeof n2); memset (en,0,sizeof en); //把字符串转化为整形数组 hs (sn1,n1); hs (sn2,n2); //计算 //乘法 for (i = 69;i >= 0;i--) for (k = 69;k >= 0;k--) { en[i + k + 1] += n1[i] * n2[k]; } //加法 for(i = 69;i >= 0;i--) en[i + 70] = n1[i] + n2[i]; //把结果标准化 //乘法&加法 for (i = 139;i >= 0;i--) { if (en[i] >= 10000) { en[i - 1] += (long long)(en[i] / 10000); en[i] = en[i] % 10000; } } //打印结果 pr(en,140); } return 0; } void hs(char *s,long long *n) { char *ps = s + strlen(s) - 1; char *tmp = NULL; long long *pn = &n[69]; long long tim = 3; while (ps >= s) { if ((ps - 3) >= s) { while(tim >= 0) { *pn = (*pn) * 10 + (*(ps - tim) - '0'); tim--; } pn--; tim = 3; }else { tmp = s; while (tmp <= ps) { *pn = *pn * 10 + (*tmp - '0'); tmp++; } } ps -= 4; } } void pr(long long *n,int num) { long long *p = n; while (*p == 0) p++; //第一个数一定要特殊处理 if (p > &n[num - 1]) { printf ("0\n"); } else { printf ("%lld",*p); p++; while (p <= &n[num - 1]) { printf ("%04lld",*p); p++; } printf ("\n"); } }
相关文章推荐
- 大数运算,队列实现大数 加法、乘法、除法、模除
- 大数加法+乘法
- 99的99次方----大数乘法和大数加法
- 大数加法、减法、乘法
- 大数加法 及 乘法
- 大数乘法、大数加法实现
- 大数加法和乘法
- 大数运算——加法,减法,乘法 .
- 大数加法与乘法
- 基础算法,大数加法和乘法的实现
- C++数据结构大作业之大数加法、乘法、幂运算
- 大数加法以及大数乘法
- 大数乘法包含大数加法(分治法)
- 大数运算之加法和乘法算法C++模板
- 大数加法、乘法
- 大数加法、减法、乘法、除法、求余、比较、乘方(代码简短(总计150)、易懂)
- 大数加法和大数乘法
- Java工作利器之常用工具类(二)——数字工具类-大数乘法、加法、减法运算
- 大数加法、减法、乘法、除法实现
- uva 10523 Very Easy !!! 大数模拟加法和乘法