加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

HDU1753(大数加法)

发布时间:2020-12-14 04:10:23 所属栏目:大数据 来源:网络整理
导读:大明A+B Time Limit: 3000/1000 MS (Java/Others)????Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5913????Accepted Submission(s): 2030 Problem Description 话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫

大明A+B

Time Limit: 3000/1000 MS (Java/Others)????Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 5913????Accepted Submission(s): 2030


Problem Description
话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫“大明”。
这时他已经不是那个只会做100以内加法的那个“小明”了,现在他甚至会任意长度的正小数的加法。

现在,给你两个正的小数A和B,你的任务是代表大明计算出A+B的值。
?


?

Input
本题目包含多组测试数据,请处理到文件结束。
每一组测试数据在一行里面包含两个长度不大于400的正小数A和B。
?


?

Output
请在一行里面输出输出A+B的值,请输出最简形式。详细要求请见Sample Output。
?


?

Sample Input
  
  
1.1 2.9 1.2222222222 2.3444323343 1 1.1
?


?

Sample Output
  
  
4 3.4555434454 2.1
?


典型的大数加法,注意小数点的处理

#include<iostream>
#include<string>
using namespace std;
/*
int main()
{
?int l1,l2,i,j,maxl,temp,k,ii,jj,ki,kj,len;
?string a,b;
?int c[410];
?while(cin>>a>>b)
?{
??l1=a.find('.');
??l2=b.find('.');
??i=l1-1;
??j=l2-1;
??maxl=k=i>j?i:j;
??????? i=a.size()-1;
??j=b.size()-1;
??ii=a.size()-l1-1;
??jj=b.size()-l2-1;
??temp=0;
??if(ii>jj)
??k=maxl+1+ii;
??else
???k=maxl+1+jj;
??ki=maxl+1+ii;
??kj=maxl+1+jj;
??len=k;
??cout<<"k="<<k<<" maxl="<<maxl<<endl;????????
??cout<<"maxl+ii=1="<<maxl+ii+1<<"? kj="<<kj<<" maxl+jj=1="<<maxl+jj+1<<" ki="<<ki<<endl;
??while(maxl+ii+1>kj)
??{
???c[k]=(a[i]-'0'+temp)%10;
???temp=(a[i]-'0'+temp)/10;
???k--;
???i--;
???ii--;
??}
??while(maxl+jj+1>ki)
??{
???c[k]=(b[j]-'0'+temp)%10;
???temp=(b[j]-'0'+temp)/10;
???k--;
???j--;
???jj--;
??}
??while(maxl+ii+1>maxl+1&&maxl+jj+1>maxl+1)
??{
???c[k]=((a[i]-'0')+(b[j]-'0')+temp)%10;
???temp=((a[i]-'0')+(b[j]-'0')+temp)/10;
???i--;j--;k--;
???ii--;
???jj--;
??}
??i=l1-1;
??j=l2-1;
??maxl=k=i>j?i:j;
??while(i>=0&&j>=0)
??{
???c[k]=((a[i]-'0')+(b[j]-'0')+temp)%10;
???temp=((a[i]-'0')+(b[j]-'0')+temp)/10;
???i--;j--;k--;
??}
??while(i>=0)
??{
???c[k]=(a[i]-'0'+temp)%10;
???temp=(a[i]-'0'+temp)/10;
???k--;
???i--;
??}
???while(j>=0)
??{
???c[k]=(b[j]-'0'+temp)%10;
???temp=(b[j]-'0'+temp)/10;
???k--;
???j--;
??}

?

??for(i=0;i<=len;i++)
????? if(i==maxl+1)?
????cout<<".";
???else cout<<c[i];
???cout<<endl;

?}
?return 0;
}*/

#include<stdio.h> #include<string.h> char s[402],t[402],c[402]; int a[402]; int main() { ?int i,d,b,n,m,f,w1,w2; ?while(scanf("%s %s",s,t)>0) ?{ ??n=strlen(s); ??m=strlen(t); ??w1=w2=0; ??for(i=0;i<n;i++) ???if(s[i]!='.') ????if(s[i]!='0') ?????w1=1; ??for(j=0;j<m;j++) ???if(t[j]!='.') ????if(t[j]!='0') ?????w2=1; ??if(w1==0&&w2==0) ???printf("0"); ??else ??{ ??for(i=0;s[i]!=''&&s[i]!='.';i++); ??for(j=0;t[j]!=''&&t[j]!='.';j++); ??if(i==n) ??{ ???s[i]='.'; ???s[i+1]='0'; ???n+=2; ???s[n]=''; ??} ??if(j==m) ??{ ???t[j]='.'; ???t[j+1]='0'; ???m+=2; ???t[m]=''; ??} ??d=i; ??b=j; ??k=0; ?? ?? ??while(1) ??{ ???d--; ???b--; ???if(d<0) ????break; ???if(b<0) ????break; ???c[k++]=s[d]+t[b]; ??} ??if(d>=0) ???while(d>=0) ????c[k++]=s[d--]; ??if(b>=0) ???while(b>=0) ????c[k++]=t[b--]; ??k--; ??for(f=0;k>=0;k--,f++) ???if(c[k]>57) ????a[f]=c[k]-48*2; ???else ????a[f]=c[k]-48; ??a[f++]=-32767; ??while(1) ??{ ???i++; ???j++; ???if(i==n) ????break; ???if(j==m) ????break; ???a[f++]=s[i]+t[j]-2*48; ??} ??if(i<n) ???while(i<n) ???a[f++]=s[i++]-48; ??if(j<m) ???while(j<m) ????a[f++]=t[j++]-48; ??for(i=f-1;i>0;i--) ???if(a[i]>0) ???if(a[i]/10>0) ???{ ????if(a[i-1]>=0) ????a[i-1]+=a[i]/10; ????else ?????a[i-2]+=a[i]/10; ????a[i]=a[i]%10; ???} ??for(j=f-1;j>=0;j--) ???if(a[j]<0) ???{ ????j--; ????break; ???} ???else ???if(a[j]!=0) ????break; ??for(i=0;i<=j;i++) ???if(a[i]<0) ????printf("."); ???else ????printf("%d",a[i]); ??} ??printf("n"); ?} ?return 0; } ?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读