高精度加法
2015-08-14 20:48
375 查看
1、
string add(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;
}
2、
string add(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;
}
2、
void add(char* a,char* b,char* c) { int i,j,k,max,min,n,temp; char *s,*pmax,*pmin; max=strlen(a); min=strlen(b); if (max<min) { temp=max; max=min; min=temp; pmax=b; pmin=a; } else { pmax=a; pmin=b; } s=(char*)malloc(sizeof(char)*(max+1)); s[0]='0'; for (i=min-1,j=max-1,k=max; i>=0; i--,j--,k--) s[k]=pmin[i]-'0'+pmax[j]; for (; j>=0; j--,k--) s[k]=pmax[j]; for (i=max; i>=0; i--) if (s[i]>'9') { s[i]-=10; s[i-1]++; } if (s[0]=='0') { for (i=0; i<=max; i++) c[i-1]=s[i]; c[i-1]='\0'; } else { for (i=0; i<=max; i++) c[i]=s[i]; c[i]='\0'; } free(s); }
相关文章推荐
- 周赛D题
- Tomcat之热部署
- 杭电 2094 产生冠军 【拓扑排序】
- spring 使用c3po连接池
- 猴子搭砖问题
- ufldl学习笔记和编程作业:Feature Extraction Using Convolution,Pooling(卷积和汇集特征提取)
- hdu 5381 2015多校第八场 莫队算法
- 添加AdMob 错误记录
- uva12489 Combating cancer(树同构)
- Ubuntu 14 无声音解决办法
- Oracle11g下载地址--多平台下的32位和64位
- JQuery 如何选择带有多个class的元素
- Java日志框架——一个经典的Logback配置实例
- POJ2395 最小生成树裸题三种复杂度做法
- poj 2367 Genealogical tree(拓扑)
- android webView不简单
- poj1011 Sticks
- HDU 4857 逃生(逆向拓扑)
- hdu2182 - Frog
- 在 Vim 中设置 Tab 为4个空格