题目大意:P=NP?;
题目解析:看到p和np吓一跳,以为涉及了计算机最难的问题,无语;其实就是数字,要使等式成立,无非P=0或者N=1,作为一道坑题,问题来了,第一次交WA,只用了double保存,知道用字符串保存后,要处理前导0和小数;
AC代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
typedef long long ll;
const int inf=0x3fffffff;
char s1[2000010],s2[2000010];
int main()
{
ll cas,c,i;
scanf("%lld",&cas);
while(cas--)
{
scanf("%s %s",&s1[0],&s2[0]);
int flag=1;
for(i=0;i<strlen(s2);i++)
{
if(s2[i]!='0'&&s2[i]!='.')
{
flag=0;
break;
}
}
if(flag==1)
{
printf("Y\n");
continue;
}
int cnt=0;
flag=1;
int f=0;
int pos=-2;
for(i=0;i<strlen(s1);i++)
{
if(s1[i]=='1')
{
pos=i;
cnt++;
if(cnt>1)
{
flag=0;
break;
}
}
else if(s1[i]=='0')
{
if(f==0&&cnt==1)
{
flag=0;
break;
}
}
else if(s1[i]=='.')
{
f=1;
if(cnt==0||pos!=i-1)
{
flag=0;
break;
}
}
else
{
flag=0;
break;
}
}
if(cnt==0)
flag=0;
if(flag)
printf("Y\n");
else
printf("N\n");
}
return 0;
}