void Expression() { if(IsAddop(Look)) EmitLn("xor %eax, %eax"); else Term(); while (strchr("+-", Look)) { EmitLn("pushl %eax"); switch(Look) { case '+': Add(); break; case '-': Substract(); break; default: Expected("Addop"); } } }
vec3& vec3::operator-=(const vec3& other) { return Substract(other); }
Vector4 Vector4::operator - (const Vector4 &other) { return Substract (other); }
vec2& vec2::operator-=(const vec2& other) { return Substract(other); }
int main(){ int t,n; int i; int j; int nLen1; int nLen2; int nTimes; int nTmp; int bStartOutput; scanf("%d",&n); for(t=0;t<n;t++){ bStartOutput=0; scanf("%s",szLine1); scanf("%s",szLine2); memset(an1,0,sizeof(an1)); memset(an2,0,sizeof(an2)); memset(aResult,0,sizeof(aResult)); nLen1=strlen(szLine1); nLen2=strlen(szLine2); if(nLen1<nLen2){ printf("0\n"); continue; } j=0; for(i=nLen1-1;i>=0;i--) an1[j++]=szLine1[i]-'0'; j=0; for(i=nLen2-1;i>=0;i--) an2[j++]=szLine2[i]-'0'; nTimes=nLen1-nLen2; for(i=nLen1-1;i>=0;i--){ if(i>=nTimes) an2[i]=an2[i-nTimes]; else an2[i]=0; } nLen2=nLen1; for(j=0;j<=nTimes;j++){ while((nTmp=Substract(an1,an2+j,nLen1,nLen2-j))>=0){ nLen1=nTmp; aResult[nTimes-j]++; } } for(i=0;i<MAX_LEN;i++){ if(aResult[i]>=10){ aResult[i+1]=aResult[i]/10; aResult[i]=aResult[i]%10; } } for(i=MAX_LEN;i>=0;i--) if(bStartOutput) printf("%d",aResult[i]); else if(aResult[i]){ printf("%d",aResult[i]); bStartOutput=1; } if(!bStartOutput) printf("0\n"); printf("\n"); } return 0; }