3 条题解
-
1
using namespace std; int a[9999999],b[9999999],c[9999999]; int main() { string s1,s2; bool f=false; int lena,lenb,lenc; cin>>s1; cin>>s2; lena=s1.length(); lenb=s2.length(); for(int i=1;i<=lena;i++) { a[i]=s1[lena-i]-'0'; } for(int i=1;i<=lenb;i++) { b[i]=s2[lenb-i]-'0'; } if((lena<lenb)||(lena==lenb)&&(s1<s2)) { f=true; swap(a,b); } lenc=max(lena,lenb); for(int i=1;i<=lenc;i++) { if(a[i]<b[i]) { a[i+1]--; a[i]+=10; } c[i]=a[i]-b[i]; } while(c[lenc]==0&&lenc>1)//lenc>1是因为怕把c[i]全减完 { lenc--; } if(f==true) { cout<<'-'; } for(int i=lenc;i>=1;i--) { cout<<c[i]; } return 0; }
-
1
相信没有什么方法比我的更复杂吧
#include<bits/stdc++.h> using namespace std; char js1[205];//加数1 char js2[205];//加数2 long long jsc1;//加数1的长度 long long jsc2;//加数2的长度 long long n1[205];//储存加数1 long long n2[205];//储存加数2 long long n3[205];//储存和 long long jw;//统计进位 long long maxx;//储存更长的那个数的长度 bool pl;//判断是否有前导0 bool js=0;//看哪个大 int main(){ cin>>js1>>js2; jsc1=strlen(js1); jsc2=strlen(js2); for(int i=1,j=jsc1-1;i<=jsc1,j>=0;i++,j--){ n1[i]=js1[j]-'0'; } for(int i=1,j=jsc2-1;i<=jsc2,j>=0;i++,j--){ n2[i]=js2[j]-'0'; } maxx=max(jsc1,jsc2); if(maxx==jsc1){ for(int i=1;i<=maxx;i++){ n3[i]=n1[i]-n2[i]; if(n3[i]<0){ n3[i]=n3[i]+10; n1[i+1]=n1[i+1]-1; } } }else{ js=1; for(int i=1;i<=maxx;i++){ n3[i]=n2[i]-n1[i]; if(n3[i]<0){ n3[i]=n3[i]+10; n2[i+1]=n2[i+1]-1; } } } pl=true; if(js==1){ cout<<"-"; } for(int i=maxx;i>=1;i--){ if(pl==true){ if(i==maxx&&n3[i]==0){ pl=true; }else{ if(i!=maxx&&pl&&n3[i]==0){ pl=true; }else{ pl=false; } } } if(!pl){ cout<<n3[i]; } } return 0; }
- 1
信息
- ID
- 650
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 9
- 标签
- (无)
- 递交数
- 15
- 已通过
- 4
- 上传者