题解 CF12B 【Correct Solution?】

思路:字符串处理 + 排序。


首先如果两个数长度不一样,又不准有前导零,这种情况直接WRONG_ANSWER退出。

根据题意,我们把第一个数字按照每一位数的大小排序,因为不能 0 不能作为首位,所以我们找到最小的一个数字替换过来,如果和第二个数一样那肯定莫得问题。

当然要是两个数本来就是 0 ,那么肯定是可以的。

#include<bits/stdc++.h>
using namespace std;
int main() {
	char a[25],b[25];
	cin>>a>>b;
	int lena=strlen(a),lenb=strlen(b);
	if(lena!=lenb) {
		puts("WRONG_ANSWER");
		return 0;
	}
	if(a[0]==b[0]&&a[0]=='0') {
		puts("OK");
		return 0;
	}
	sort(a,a+lena);
	int opt=0;
	while(a[opt]=='0') opt++;
	swap(a[0],a[opt]);
	if(!strcmp(a,b)) puts("OK");
	else puts("WRONG_ANSWER");
	return 0;
}
原文地址:https://www.cnblogs.com/ahawzlc/p/12837321.html