【洛谷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水过的这个题)