题目链接:
思路:
第一想法是枚举a,b,但是这样复杂度就来到了O(),显然TLE
那么我们就应该想想 N=a+b+ab 能不能变形一下
其实一眼就能看出来N+1=a+b+ab+1=(a+1)(b+1)
也就是说如果N不能分解为a+b+ab 那么N+1必定不能分解为(a+1)(b+1)
又因为a+1>1,b+1>1 也就是说N+1是一个质数
那么我们只要判断N+1是不是一个质数即可得出答案
复杂度为O()
代码:
#include<stdio.h>
#include<math.h>
typedef long long uu;
int isprime(uu p)
{
uu i;
for(i=2;i<=sqrt(p);i++)
if(!(p%i)) return 0;
return 1;
}
int main()
{
uu n,i;
scanf("%lld",&n);
if(isprime(n+1)==1)
printf("No");
else
printf("Yes");
}