解决方法:二分查找法(对1到x之间的数字进行判断)。
我的代码:
#include<stdio.h>
int binarysearch(int a[],int low,int high,int x)
{
int middle;
while(low<=high)
{
middle=(low+high)/2;
if(x==a[middle]*a[middle]) return a[middle];
else if(x>a[middle]*a[middle]) low=middle+1;
else high=middle-1;
}
return -1;
}
int main()
{
int x,i,a[1001];
scanf("%d",&x);
for(i=0;i<x;i++) a[i]=i+1;
if(binarysearch(a,0,x-1,x)==-1) puts("No");
else printf("YES %d\n",binarysearch(a,0,x-1,x));
return 0;
}