还能说什么呢?一道畜生题!

测试点:
4
0000 0000.0
输出:YES 0.0000*10^0

思路:

1.去小数点
2.去前导0
3.截取N位有效位组成两个新串
4.对比指数和有效数字是否相同

#include<cstdio>
#include<cstring>
int check(char s[]){
	for(int i=0;s[i]!='\0';i++){
		if(s[i]!='0') return false;
	}
	return true;
}
int main(){
	int N;
	char s1[130],s2[130];
	scanf("%d",&N);
	scanf("%s%s",s1,s2);
	int len1=strlen(s1);
	int len2=strlen(s2);
	int i,j;
	//s1去小数点 
	i=0;
	while(i<len1&&s1[i]!='.'){
		i++;
	}
	int cnt1=i;
	while(cnt1!=len1&&i<len1){
		s1[i]=s1[i+1];
		i++;
	}
	//s2去小数点 
	i=0;
	while(i<len2&&s2[i]!='.'){
		i++;
	}
	int cnt2=i;
	while(cnt2!=len2&&i<len2){
		s2[i]=s2[i+1];
		i++;
	}
	//s1去前导0 
	i=0;
	while(s1[i]=='0'){
		i++;
	} 
	j=0;
	cnt1=cnt1-i;
	len1=strlen(s1);
	while(j+i<len1){
		s1[j]=s1[j+i];
		j++;
	} 
	s1[j]='\0';
	//s2去前导0 
	i=0;
	while(s2[i]=='0'){
		i++;
	} 
	j=0;
	cnt2=cnt2-i;
	len2=strlen(s2);
	while(j+i<len2){
		s2[j]=s2[j+i];
		j++;
	} 
	s2[j]='\0';
	//s1补尾0至100位 
	i=strlen(s1);
	while(i<=100){
		s1[i]='0';
		i++;
	}
	//s2补尾0至100位 
	i=strlen(s2);
	while(i<=100){
		s2[i]='0';
		i++;
	}
	s1[N]='\0'; 
	s2[N]='\0';
	if(strcmp(s1,s2)==0&&check(s1)){
		cnt1=0;
		cnt2=0;
	}
	if(cnt1!=cnt2){
		printf("NO 0.%s*10^%d 0.%s*10^%d\n",s1,cnt1,s2,cnt2);
		return 0;
	}
	//对s1和s2串比对
	
	int flag=0;
	if(strcmp(s1,s2)!=0){
		flag=1;
	}
	//输出 
	if(flag==0){
		printf("YES 0.%s*10^%d\n",s1,cnt1);
	}else{
		printf("NO 0.%s*10^%d 0.%s*10^%d\n",s1,cnt1,s2,cnt2);
	} 
	return 0;
}