【洛谷p1932】A+B A-B A*B A/B A%B Problem

(emmmm)

这道题成功让我见识到了Dev撤回的高端大气上档(dàng)次。

A+B A-B A*B A/B A%B Problem【传送门】(真是个优秀的高精)

算法:::::::(模板题弄这么费劲干什么??)


 

先说一下,代码没有完成!没有完成!没有完成!(高精除放弃)

 1  #include<iostream>//代码未ac
 2  #include<cstdio>
 3  #include<cmath>
 4  #include<algorithm>
 5  #include<string>
 6  #include<cstring>
 7  using namespace std;
 8  char a1[1010],b1[1010];
 9  int a[1010],b[1010],d[1010],e[1010],lena,lenb,lend;
10  int c[10000001];
11  void sum();
12  void difference();
13  void product();
14  int main()
15  {
16      scanf("%s",a1);
17      scanf("%s",b1);
18      lena=strlen(a1);
19      lenb=strlen(b1);
20      for(int i=0;i<lena;i++){a[lena-i]=a1[i]-48;d[lena-i]=a[lena-i];}
21      for(int i=0;i<lenb;i++){b[lenb-i]=b1[i]-48;e[lenb-i]=b[lenb-i];}
22      sum();
23      difference();
24      product();
25  }
26  void sum()
27  {
28      int x=0,lenc=1;memset(c,0,sizeof(c));
29      while(lenc<=lena||lenc<=lenb){
30          c[lenc]=a[lenc]+b[lenc]+x;
31          x=c[lenc]/10;
32          c[lenc]%=10;                                                  
33          lenc++;                                                
34      }c[lenc]=x;
35      if(c[lenc]==0)lenc--;
36      for(int i=lenc;i>=1;i--)cout<<c[i];
37      cout<<endl;
38  }
39  void difference()
40  {
41      memset(c,0,sizeof(c));
42      if(strcmp(a1,b1)==0)
43          cout<<strcmp(a1,b1)<<endl;
44      else{
45          if(lena<lenb||(lena==lenb&&strcmp(a1,b1)<0)){
46              cout<<"-";
47              int i=1;
48              while(i<=lena||i<=lenb){
49                  if(b[i]<a[i]){b[i]+=10;b[i+1]--;}
50              c[i]=b[i]-a[i];
51              i++;}lend=i;}
52          else {
53              int i=1;
54              while(i<=lena||i<=lenb){
55                  if(b[i]>a[i]){a[i]+=10;a[i+1]--;}
56              c[i]=a[i]-b[i];
57              i++;}lend=i;}
58              while((c[lend]==0)&&lend>1)lend--;
59              for(int j=lend;j>=1;j--)cout<<c[j];
60                cout<<endl;
61          }
62      }
63  void product()
64  {
65      memset(c,0,sizeof(c));
66      for(int i=1;i<=lena;i++){int x=0;
67          for(int j=1;j<=lenb;j++){
68              c[i+j-1]=d[i]*e[j]+x+c[i+j-1];
69              x=c[i+j-1]/10;
70              c[i+j-1]%=10;
71          }c[i+lenb]=x;
72      }                               
73      int lene=lena+lenb;
74      while(c[lene]==0&&lene>1)lene--;
75      for(int i=lene;i>=1;i--)cout<<c[i];
76      cout<<endl;
77  }//(可劲压行也没压下去)

 

 

 

这个撤回真的如同韩学长说的:撤着撤着就不知道去哪了??害得我又改了好多……(好迷)

嗯end-(悄咪咪地讲我用python水过的这个题)

posted @ 2019-03-27 10:51  Sweetness  阅读(381)  评论(0编辑  收藏  举报