1065 - Just for Fun
Time Limit:1s Memory Limit:64MByte
Submissions:980Solved:77
DESCRIPTION
P=NP?
INPUT
First line contains a single integer T which denotes the number of test cases. For each test case, there is two numbers which denote N and P separated by a space.(0<=N<
231231,0<=P<
231231)The input data is no large than 1M.
OUTPUT
For each case, output the "Y" or "N" in a single line.
SAMPLE INPUT
2
1 123
123 0
SAMPLE OUTPUT
Y
Y
题意:
是否有p=n*p
有就Y,没有就N
注意小数的时候,还有前导零;
例:01.00000 000000.00000
答案是Y
1.000000000000000000000000000000000000000001 3
答案是N
#include<stdio.h>
#include<string.h>
char n[100000],p[100000];
int k,l;
int we()
{
int sum=0,h,s=0;
for(int i=0;i<k;i++)
{
if(n[i]=='.')
{
s=1;
h=i;
break;
}
}
if(s==1)
{
for(int i=0;i<=h-1;i++)
{
if(n[i]=='0')
{
sum++;
}
}
if(n[h-1]=='1'&&sum==h-1)
{
int sum1=0;
for(int i=h+1;i<k;i++)
{
if(n[i]=='0')
{
sum1++;
}
}
if(sum1+sum+2==k)
{
return 1;
}
else
{
return 0;
}
}
else
{
return 0;
}
}
else if(s==0)
{
if(n[0]=='1'&&k==1)
{
return 1;
}
else
return 0;
}
}
int ni()
{
int sum=0;
for(int i=0;i<l;i++)
{
if(p[i]=='0')
{
sum++;
}
if(p[i]=='.')
{
sum++;
}
}
if(sum==l)
return 1;
else
return 0;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%s%s",n,p);
l=strlen(p);
k=strlen(n);
if(we()==1||ni()==1)
{
printf("Y\n");
}
else
printf("N\n");
}
}