大数相加 大数相乘 模板
2014-05-18 20:27
183 查看
void multiply(const char *a,const char *b)//大数相乘 { int i,j,ca,cb,*s; ca=strlen(a); cb=strlen(b); s=(int *)malloc(sizeof(int)*(ca+cb)); //分配存储空间 for (i=0;i<ca+cb;i++) s[i]=0; // 每个元素赋初值0 for (i=0;i<ca;i++) for (j=0;j<cb;j++) s[i+j+1]+=(a[i]-'0')*(b[j]-'0'); for (i=ca+cb-1;i>=0;i--) // 这里实现进位操作 if (s[i]>=10) { s[i-1]+=s[i]/10; s[i]%=10; } char *c=(char *)malloc((ca+cb)*sizeof(char)); //分配字符数组空间,因为它比int数组省! i=0; while(s[i]==0) i++; // 跳过头部0元素 for (j=0;i<ca+cb;i++,j++) c[j]=s[i]+'0'; c[j]='\0'; for (i=0;i<ca+cb;i++) cout<<c[i]; cout<<endl; free(s); }
string sum(string s1,string s2) //大数相加 { if(s1.length()<s2.length()) { string temp=s1; s1=s2; s2=temp; } for(int i=s1.length()-1,j=s2.length ()-1;i>=0;i--,j--) { s1[i]=char(s1[i]+(j>=0?s2[j]-'0':0)); if(s1[i]-'0'>=10) { s1[i]=char((s1[i]-'0')%10+'0'); if(i) s1[i-1]++; else s1='1'+s1; } } return s1; }
相关文章推荐
- [模板]大整数相加、相乘
- 大数相加和大数相乘
- 大数相加,大数相乘和100!
- 大数相加模板
- 大数相乘+大数相加
- 大数相乘、大数相加、大数相减Java版本
- 蓝桥杯PREV-34(数论+大数相乘大数开方模板)
- 大数问题:用字符串解决大数相加和相乘
- 大数相加与相乘算法实现
- 大数相乘+大数相加
- 大数相乘、大数相加、大数相减Java版本
- Linux C/C++ 编程练手 --- 大数相加和大数相乘
- A + B Problem II 大数相加(可以作为模板题)
- 模板,大数相加
- 大数相加模板
- 【模板小程序】 十进制大数相乘(正数、负数、0均可),包含合法性检查
- 大数相乘+大数相加
- 大数相乘、相加
- Java实现大数相加、相乘(不使用BigInteger)
- 大数相乘、大数相加、大数相减Java版本