2 条题解
-
0一个被盗号的人 (zhangenshuo) LV 6 @ 2023-8-5 21:18:13
#include <iostream> #include <cstring> using namespace std; #define max 100000000 char a[max],b[max],temp[max]; int A[max],B[max],C[max],lena,lenb; int main(){ cin>>a; cin>>b; lena=strlen(a); lenb=strlen(b); if(lena<lenb||strcmp(a,b)<0&&lena==lenb) { cout<<"-"; strcpy(temp,a); strcpy(a,b); strcpy(b,temp); lena=strlen(a); lenb=strlen(b); } for(int i=0;i<lena;++i) A[i]=a[lena-1-i]-'0'; for(int i=0;i<lenb;++i) B[i]=b[lenb-1-i]-'0'; for(int i=0;i<lena;++i) { if(A[i]<B[i]) { A[i]+=10; A[i+1]--; C[i]=A[i]-B[i]; } else { C[i]=A[i]-B[i]; } } for(int i=lena-1;i>=0;--i) { if(C[i]==0&&lena>1) lena--; else break; } for(int i=lena-1;i>=0;--i) cout<<C[i]; return 0;
}
-
02023-3-18 22:54:55@
#include <bits/stdc++.h> using namespace std; const int MAXN=1e4+4; char s1[MAXN]={},s2[MAXN]={},tmp[MAXN]={}; int a[MAXN]={},b[MAXN]={},c[MAXN]={}; int main() { cin>>s1>>s2; int lena=strlen(s1),lenb=strlen(s2); if((lena<lenb)||(lena==lenb&&strcmp(s1,s2)<0)) { printf("-"); strcpy(tmp, s1); strcpy(s1, s2); strcpy(s2, tmp); lena=strlen(s1); lenb=strlen(s2); } for(int i=0;i<lena;i++)a[i]=s1[lena-i-1]-'0'; for(int i=0;i<lenb;i++)b[i]=s2[lenb-i-1]-'0'; for(int i=0;i<lena;i++) { if(a[i]<b[i]) { a[i+1]--; a[i]+=10; } c[i]=a[i]-b[i]; } for(int i=lena-1; i>=0; i--) { if(0==c[i]&&lena>1)lena--; else break; } for(int i=lena-1;i>=0;i--)cout<<c[i]; return 0; }
- 1
信息
- ID
- 1677
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 150
- 已通过
- 53
- 上传者