解答

P1601 A+B Problem(高精)

谁说不行的 ```cpp #include<bits/stdc++.h> using namespace std; //a,b>=0结果为string类型且去除整数部分前置0、小数部分后置0,小数点为英文句号"." string jiafa(string a,string b){ string a1="",a2="",b1="",b2=""; { int i; for(i=a.length()-1;i>-1;i--){ if(a[i]=='.')break; a2=a[i]+a2; } for(i--;i>-1;i--){ a1=a1+a[i]; } for(i=b.length()-1;i>-1;i--){ if(b[i]=='.')break; b2=b[i]+b2; } for(i--;i>-1;i--){ b1=b1+b[i]; } if(a1=="")a1=a2,a2=""; if(b1=="")b1=b2,b2=""; // cout<<a1<<" "<<a2<<" "<<b1<<" "<<b2<<endl; } int lena1=a1.length(),lenb1=b1.length(),lena2=a2.length(),lenb2=b2.length(); { if(lena1<lenb1)for(int i=0;i<lenb1-lena1;i++)a1="0"+a1; else for(int i=0;i<lena1-lenb1;i++)b1="0"+b1; if(lena2<lenb2)for(int i=0;i<lenb2-lena2;i++)a2=a2+"0"; else for(int i=0;i<lena2-lenb2;i++)b2=b2+"0"; // cout<<a1<<" "<<a2<<" "<<b1<<" "<<b2<<endl; } string ans1="",ans2="";int jinwei=0,yujia; { for(int i=max(lena2,lenb2)-1;i>-1;i--){ yujia=(a2[i]-'0'+b2[i]-'0'+jinwei); ans2=to_string(yujia%10)+ans2; if(yujia>9)jinwei=1; else jinwei=0; } for(int i=max(lena1,lenb1)-1;i>-1;i--){ yujia=(a1[i]-'0'+b1[i]-'0'+jinwei); ans1=to_string(yujia%10)+ans1; if(yujia>9)jinwei=1; else jinwei=0; } if(jinwei!=0)ans1=to_string(jinwei)+ans1; } { string str=""; int i=0; for(i;i<ans1.length()-1;i++)if(ans1[i]!='0')break; for(i;i<ans1.length();i++)str=str+ans1[i]; ans1=str;i=ans2.length()-1;str=""; for(i;i>-1;i--)if(ans2[i]!='0')break; for(i;i>-1;i--)str=ans2[i]+str; ans2=str; } string finish_ans; if(ans2=="")finish_ans=ans1; else finish_ans=ans1+"."+ans2; return finish_ans; } int main(){ string a,b; getline(cin,a); getline(cin,b); a.pop_back(),b.pop_back(); cout<<jiafa(a,b); return 0; } ```
by _8008008 @ 2024-01-14 18:19:25


不如skibidi toilet
by Cczzyy20150005 @ 2024-01-14 18:35:34


是你程序的问题。
by xiaoshumiao @ 2024-01-14 18:41:58


|