zoukankan      html  css  js  c++  java
  • hdu 1753 大明A+B

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

    容易出错的事例:

    0.1 0.2

    1.88 22.22

    1 0.01

    大概出错的几个点,做久了思维根本出不来了。。。

    3次A过。。。马马虎虎吧,代码太长了,优化回来再说吧

      1 #include<iostream>
      2 #include<stdio.h>
      3 #include<math.h>
      4 #include<string.h>
      5 #include<stdlib.h>
      6 using namespace std;
      7 const int M=405;
      8 int c[M];
      9 void xsone(int a[],int b[],int lenz)
     10 {
     11     for(int i=0;i<lenz;i++)
     12     a[i]=a[i]+b[i];
     13     int temp=0;
     14     for(int i=0;i<lenz+1;i++)
     15     {
     16         a[i]+=temp;
     17         temp=a[i]/10;
     18         a[i]%=10;
     19     }
     20     int i;
     21     for(i=lenz;i>=0;i--)
     22     if(a[i]!=0)
     23     break;
     24     if(i<0)
     25     printf("0");
     26     for(;i>=0;i--)
     27     printf("%d",a[i]);
     28 }
     29 int xstwo(int a[],int b[],int lenz)
     30 {
     31     memset(c,0,sizeof(c));
     32     for(int i=0;i<lenz;i++)
     33     c[i]=a[i]+b[i];
     34     int temp=0,flag=0;
     35     for(int i=lenz-1;i>=0;i--)
     36     {
     37         c[i]+=temp;
     38         if(i==0 && c[i]>=10)
     39         flag=1;
     40         temp=c[i]/10;
     41         c[i]%=10;
     42     }
     43     return flag;
     44 }
     45 
     46 
     47 int main()
     48 {
     49     //freopen("in.txt","r",stdin);
     50     char sa[M],sb[M];
     51     memset(sa,0,sizeof(sa));
     52     memset(sb,0,sizeof(sb));
     53     while(~scanf("%s %s",sa,sb))
     54     {
     55         int lena = strlen(sa);
     56         for(int i=lena;i<M;i++)
     57         sa[i]='0';
     58         int lenb = strlen(sb);
     59         for(int i=lenb;i<M;i++)
     60         sb[i]='0';
     61         int lenz = lena>lenb ? lena :lenb;
     62         int flag=0,sad=0,sbd=0;
     63         for(int i=0;i<lenz;i++)
     64         {
     65             if(sa[i]=='.')
     66             {flag++;sad=i;}
     67             if(sb[i]=='.')
     68             {flag++;sbd=i;}
     69         }
     70         //printf("%d
    ",flag);
     71         if(flag==0)
     72         {
     73             int a[M],b[M];
     74             memset(a,0,sizeof(a));
     75             memset(b,0,sizeof(b));
     76             for(int i=0;i<lena;i++)
     77             a[lena-1-i]=sa[i]-'0';
     78             for(int i=0;i<lenb;i++)
     79             b[lenb-1-i]=sb[i]-'0';
     80             xsone(a,b,lenz);
     81             printf("
    ");
     82         }
     83         else if(flag==1)
     84         {
     85             if(sad)
     86             {
     87                 int a[M],b[M];
     88                 memset(a,0,sizeof(a));
     89                 memset(b,0,sizeof(b));
     90                 for(int i=0;i<sad;i++)
     91                 a[sad-1-i]=sa[i]-'0';
     92                 for(int i=0;i<lenb;i++)
     93                 b[lenb-1-i]=sb[i]-'0';
     94                 lenz = sad>lenb ? sad : lenb;
     95                 xsone(a,b,lenz);
     96                 for(int i=sad;i<lena;i++)
     97                 printf("%c",sa[i]);
     98                 printf("
    ");
     99             }
    100             if(sbd)
    101             {
    102                 int a[M],b[M];
    103                 memset(a,0,sizeof(a));
    104                 memset(b,0,sizeof(b));
    105                 for(int i=0;i<lena;i++)
    106                 a[lena-1-i]=sa[i]-'0';
    107                 for(int i=0;i<sbd;i++)
    108                 b[sbd-1-i]=sb[i]-'0';
    109                 lenz = lena>sbd ? lena : sbd;
    110                 xsone(a,b,lenz);
    111                 for(int i=sbd;i<lenb;i++)
    112                 printf("%c",sb[i]);
    113                 printf("
    ");
    114             }
    115         }
    116         else
    117         {
    118             int a[M],b[M];
    119             memset(a,0,sizeof(a));
    120             memset(b,0,sizeof(b));
    121             //printf("%d
    ",lenz);
    122             int t=0;
    123             for(int i=sad+1;i<lena;i++)
    124             a[t++]=sa[i]-'0';
    125             t=0;
    126             for(int i=sbd+1;i<lenb;i++)
    127             b[t++]=sb[i]-'0';
    128             int salend=lena-sad-1;
    129             int sblend=lenb-sbd-1;
    130             lenz = salend>sblend ? salend : sblend;
    131             //printf("%d",lenz);
    132             int dright=0;
    133             dright = xstwo(a,b,lenz);
    134             //printf("%d
    ",dright);
    135 //            int i;
    136             int lenz2 = lenz;
    137 //            for(i=0;i<lenz;i++)
    138 //            printf("%d",c[i]);
    139 //            printf("
    ");
    140 
    141             memset(a,0,sizeof(a));
    142             memset(b,0,sizeof(b));
    143             for(int i=0;i<sad;i++)
    144             a[sad-1-i]=sa[i]-'0';
    145 
    146             if(dright == 1)//进位
    147             a[0]++;
    148             for(int i=0;i<sbd;i++)
    149             b[sbd-1-i]=sb[i]-'0';
    150             lenz = sad>sbd ? sad :sbd;
    151             xsone(a,b,lenz);
    152             int i,h=0,j;
    153             for(i=lenz2;i>=0;i--)
    154             if(c[i]!=0)
    155             break;
    156             h=i;
    157             if(h>=0)
    158             {
    159                 printf(".");
    160                 for(j=0;j<=h;j++)
    161                 printf("%d",c[j]);
    162             }
    163             printf("
    ");
    164         }
    165     }
    166     return 0;
    167 }
  • 相关阅读:
    对获取的DataTable表进行过滤筛选得到DataView
    简单提取iOS13的ipsw固件的内置壁纸(或文件)
    win10设置Python程序定时运行(设置计划任务)
    后端返回一个这种类型的时间格式给前端2020-01-16T09:10:02.349Z
    js把每个词的首字母转大写
    idea连接mysql自动生成实体类
    el自定义函数
    js日期时间格式化
    js大小写转换
    js瞄点
  • 原文地址:https://www.cnblogs.com/xuesen1995/p/4350569.html
Copyright © 2011-2022 走看看