1 solutions
-
0
C++ :
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <cstdlib> #include <cmath> using namespace std; struct node { int FF,len,a[410]; node() { FF=len=0; memset(a,0,sizeof(a)); } }; char st[401]; int mymax(int x,int y){return x>y?x:y;} bool Pd(node a,node b) { int i; int len; len=mymax(a.len,b.len); for(i=len;i>=1;i--) { if(a.a[i]>b.a[i]) return true;//A>B if(a.a[i]<b.a[i]) return false;//A<B } return true;//A==B } node minus11(node n1,node n2) { int i,j; node no; if(Pd(n1,n2)==true)//n1>=n2 { no.FF=1; no.len=n1.len; for(i=1;i<=no.len;i++) no.a[i]=n1.a[i]-n2.a[i]; } else { no.FF=-1; no.len=n2.len; for(i=1;i<=no.len;i++) no.a[i]=n2.a[i]-n1.a[i]; } for(i=1;i<=no.len;i++) { if(no.a[i]<0) { no.a[i+1]-=1; no.a[i]+=10; } } while(no.a[no.len]==0) no.len--; return no; } int main() { //freopen("a.in","r",stdin); //freopen("a.out","w",stdout); int i,j; node ans,ni,nj; scanf("%s",st+1); ni.len=strlen(st+1); ni.FF=1; for(i=1;i<=ni.len;i++) ni.a[i]=st[ni.len-i+1]-'0'; scanf("%s",st+1); nj.len=strlen(st+1); nj.FF=1; for(i=1;i<=nj.len;i++) nj.a[i]=st[nj.len-i+1]-'0'; ans=minus11(ni,nj); if(ans.FF==-1) { printf("-"); for(i=ans.len;i>=1;i--) printf("%d",ans.a[i]); } if(ans.FF==1) { for(i=ans.len;i>=1;i--) printf("%d",ans.a[i]); } printf("\n"); return 0; }
- 1
Information
- ID
- 600
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By