有没有佬帮忙看一下,第一个测试点是
输入
30141 8160
输出
21981
我在dev上用着没问题啊,为什么这第一个测试点都wa了,实在找不到问题了。代码各位佬能用我的跑跑吗?
#include<stdio.h>
#include<string.h>
int Dispose(int *arr1,int *arr2,int len){
if(len==-1||arr1[len]>arr2[len]) return 0;
else if(arr1[len]<arr2[len]) return 1;
else return Dispose(arr1,arr2,--len);
}
void swap(int *arr1,int *arr2,int len){
for(int i=0;i<len;i++){
int t=arr1[i];
arr1[i]=arr2[i];
arr2[i]=t;
}
}
int main(){
int arr1[10100]={0},arr2[10100]={0},ans[10100]={0};
char str1[10100]={'\0'},str2[10100]={'\0'};
gets(str1);
gets(str2);
int len1=strlen(str1);
int len2=strlen(str2);
for(int i=0;i<len1;i++){
arr1[len1-i-1]=str1[i]-'0';
}
for(int i=0;i<len2;i++){
arr2[len2-i-1]=str2[i]-'0';
}
int len=(len1>=len2?len1:len2),flag=0,flag2=0;
if(len1==len2) flag=Dispose(arr1,arr2,len-1);
if(flag||len1<len2){
swap(arr1,arr2,len);
flag2=1;
}
flag=0;
for(int i=0;i<len;i++){
ans[i]=arr1[i]-arr2[i]+flag;
flag=0;
if(ans[i]<0){
ans[i]+=10;
flag=-1;
}
}
while(ans[len-1]==0&&len-1>=0) len--;
if(flag2) printf("-");
if(len==0) printf("0");
for(int i=len-1;i>=0;i--){
printf("%d",ans[i]);
}
return 0;
}