#include <stdio.h> #include<math.h> int binarySearch(int low,int high,int key) { while(low<=high) { int mid=(low+high)/2; int x = (mid*(mid+1)); if(x<key) { low=mid+1; } else if(x>key) { high=mid-1; } else { return mid; } } return -1; } int main() { int n,i,j,b; int flag=0; scanf("%d",&n); for(i=1;i<=sqrt(n);i++){ b = n - ((i*(i+1))/2); int y = binarySearch(1,sqrt(2*b),2*b); if(y>0) { flag =1; break; } } if(flag==1) printf("YES"); else printf("NO"); return 0; }
No comments:
Post a Comment