对于每组案例,每组测试数据占2行,分别是两个加数。
每组案例是n行,每组测试数据有一行输出是相应的和。 输出保证一定是一个小数部分不为0的浮点数
链接:https://www.nowcoder.com/questionTerminal/ddec753f446e4ba4944e35378ba635c8 来源:牛客网 #include<iostream> #include<string> using namespace std; int main(){ string s1,s2; while(cin>>s1){ cin>>s2; int a[110]={0},b[110]={0}; int mida,midb,i; int n1=s1.length(),n2=s2.length(),n; for(i=0;i<n1;i++){ if(s1[n1-i-1]==‘.‘){ mida=i; a[i]=-1; } else a[i]=s1[n1-i-1]-‘0‘; } for(i=0;i<n2;i++){ if(s2[n2-i-1]==‘.‘){ midb=i; b[i]=-1; } else b[i]=s2[n2-i-1]-‘0‘; } if(mida<midb){ int len=midb-mida; for(i=n1-1;i>=0;i--) a[i+len]=a[i]; n1+=len; for(i=0;i<len;i++) a[i]=0; } else if(midb<mida){ int len=mida-midb; for(i=n2-1;i>=0;i--) b[i+len]=b[i]; n2+=len; for(i=0;i<len;i++) b[i]=0; } n=n1>n2?n1:n2; int k=0; for(i=0;i<n;i++){ if(a[i]==-1) continue; int t=(a[i]+b[i]+k)/10; a[i]=(a[i]+b[i]+k)%10; k=t; } if(k!=0) a[n++]=k; for(i=n-1;i>=0;i--){ if(a[i]==-1) cout<<"."; else cout<<a[i]; } cout<<endl; } return 0; }
原文:https://www.cnblogs.com/JAYPARK/p/10285316.html