求助,C语言,刚入门,遇到不懂的了
查看原帖
求助,C语言,刚入门,遇到不懂的了
1526602
flashfear楼主2024/11/6 22:13

有没有佬帮忙看一下,第一个测试点是

输入

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;
}
2024/11/6 22:13
加载中...