1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cstring> 5 #include<string> 6 #include<cmath> 7 #include<set> 8 #include<vector> 9 #include<stack> 10 #include<queue> 11 #include<map> 12 using namespace std; 13 #define ll long long 14 #define se second 15 #define fi first 16 const int INF= 0x3f3f3f3f; 17 const int N=1e6+5; 18 19 string s1,s2; 20 int a[10001],b[10001],n,len1,len2; 21 22 int compare() 23 { 24 if(len1>len2) return 1; 25 if(len1<len2) return -1; 26 for(int i=0;i<len1;i++){ 27 if(s1[i]>s2[i]) return 1; 28 if(s1[i]<s2[i]) return -1; 29 } 30 return 0; 31 } 32 void cun() 33 { 34 cin>>s1>>s2; 35 len1=s1.length(); 36 len2=s2.length(); 37 for(int i=1;i<=len1;i++) 38 a[i]=s1[len1-i]-'0'; 39 for(int i=1;i<=len2;i++) 40 b[i]=s2[len2-i]-'0'; 41 } 42 43 void Plus() 44 { 45 int w=max(len1,len2); 46 for(int i=1;i<=w;i++) 47 { 48 a[i+1] +=(a[i]+b[i])/n; 49 a[i] =(a[i]+b[i])%n; 50 } 51 if(a[w+1] ) w++; 52 for(int i=w;i>=1;i--) 53 cout<<a[i]; 54 } 55 56 void Minus() 57 { 58 int sign=compare(); 59 int w=max(len1,len2); 60 if(sign==0){ 61 cout<<0<<endl; return; 62 } 63 if(sign==1){ 64 for(int i=1;i<=w;i++) 65 { 66 if(a[i]<b[i]) a[i]+=10, a[i+1]--; 67 a[i]=a[i]-b[i]; 68 } 69 } 70 if(sign==-1){ 71 for(int i=1;i<=w;i++) 72 { 73 if(b[i]<a[i]) b[i]+=10, b[i+1]--; 74 a[i]=b[i]-a[i]; 75 } 76 cout<<'-'; 77 } 78 while(a[w]==0){ 79 w--; 80 } //首不能为0: 81 for(int i=w;i>=1;i--) 82 cout<<a[i]; 83 } 84 85 int main() 86 { 87 cun(); 88 Minus(); 89 }
高精度(加减乘除
猜你喜欢
转载自www.cnblogs.com/thunder-110/p/9288426.html
今日推荐
周排行