大明A+B

来源:互联网 发布:游戏美工招聘要求西安 编辑:程序博客网 时间:2024/04/28 14:07


http://acm.hdu.edu.cn/showproblem.php?pid=1753

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
// freopen("C:\\Users\\John\\Desktop\\hi.txt","r",stdin);
 char a[1000],b[1000],a1[1000],b1[1000];
 int S[1000];
 memset(a,0,sizeof(a));
 memset(b,0,sizeof(b));
 while(cin>>a>>b)
 {
  int signa,signb;
  int i,j;
  for(i=0;a[i];i++)
  if(a[i]=='.')
  {
   signa=i;
   break; 
  }
  if(a[i]==0)
  signa=i;
  for(i=0;b[i];i++)
  if(b[i]=='.')
  {
   signb=i;
   break; 
  }
  if(b[i]==0)
  signb=i;
  memset(a1,0,sizeof(a1));
  memset(b1,0,sizeof(b1));
  memset(S,0,sizeof(S));

  for(i=500;i<=910;i++)
  a1[i]=a[signa+i-500];
  for(i=499,j=0;i>=0 && signa-1-j>=0;i--,j++)
  a1[i]=a[signa-1-j];
  
  for(i=500;i<=910;i++)
  b1[i]=b[signb+i-500];
  for(i=499,j=0;i>=0 && signb-1-j>=0;i--,j++)
  b1[i]=b[signb-1-j];
  
  memset(a,0,sizeof(a));
  memset(b,0,sizeof(b));
  
  int k=0;
  int temp;
  for(i=910;i>500;i--)
  {
   if(a1[i]>='0' && b1[i]>='0')
   temp=a1[i]-'0'+b1[i]-'0'+k;
   else if(a1[i]>='0' && b1[i]<'0')
   temp=a1[i]-'0'+b1[i]+k;
   else if(a1[i]<'0' && b1[i]>='0')
   temp=a1[i]+b1[i]-'0'+k;
   else
   temp=a1[i]+b1[i]+k;
   k=temp/10;
   S[i]=temp%10;
   }
  
  for(i=499;i>=0;i--)
  {
   if(a1[i]>='0' && b1[i]>='0')
   temp=a1[i]-'0'+b1[i]-'0'+k;
   else if(a1[i]>='0' && b1[i]<'0')
   temp=a1[i]-'0'+b1[i]+k;
   else if(a1[i]<'0' && b1[i]>='0')
   temp=a1[i]+b1[i]-'0'+k;
   else
   temp=a1[i]+b1[i]+k;
   
   k=temp/10;
   S[i]=temp%10;
   }
  for(i=0;i<=498;i++)
  if(S[i]!=0)
  break;
 
  for(;i<=499;i++)
  cout<<S[i];
  
  for(i=910;i>=501;i--)
  if(S[i]!=0)
  break;
  
  if(i!=500)
  cout<<".";
  
  for(int j=501;j<=i;j++)
  cout<<S[j];
  
  cout<<endl;
  
 }
 return 0;
}

0 0