天天看点

poj2572 Hard to Believe, but True!

2572判断两个数逆置相加得到结果再逆置,判断给的等式是否正确,这题几乎和1504题一模一样,就多加个输入的分割,这次0MS过了。

代码如下:

#include<stdio.h>
#include<string.h>

char a[8],b[8],c[10];

int reverse(char *s){
	char str[7];
	int i;
	char ch;
	strcpy(str,s);
	int len=strlen(str);
	for(i=0;i<len/2;i++){
		ch=str[i];
		str[i]=str[len-i-1];
		str[len-i-1]=ch;
	}	return (atoi(str));
}

void getStr(char *s){
	int len=strlen(s);
	int i=0,j;
	for (j=0;i<len;i++){
		if(s[i]=='+'){
			i++;
			break;
		}
		else{
			a[j]=s[i];
			j++;
		}
	}	for(j=0;i<len;i++){
		if(s[i]== '='){
			i++;
			break;
		}
		else{
			b[j]=s[i];
			j++;
		}
	}	for(j=0;i<len;i++){
		c[j]=s[i];
		j++;
	}	
}

void main(){
	char s[25];
	while(gets(s)){
		if(0==strcmp(s,"0+0=0")){
			printf("True\n");
			break;
		}
		memset(a,'\0',sizeof(a));
		memset(b,'\0',sizeof(b));
		memset(c,'\0',sizeof(c));
		getStr(s);
		if(reverse(c)==(reverse(a)+reverse(b)))
			printf("True\n");
		else
			printf("False\n");
	}
}