Funky Numbers CodeForces - 192A

Posted 啦啦啦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Funky Numbers CodeForces - 192A相关的知识,希望对你有一定的参考价值。

As you very well know, this year‘s funkiest numbers are so called triangular numbers (that is, integers that are representable as 技术分享, where k is some positive integer), and the coolest numbers are those that are representable as a sum of two triangular numbers.

A well-known hipster Andrew adores everything funky and cool but unfortunately, he isn‘t good at maths. Given number n, help him define whether this number can be represented by a sum of two triangular numbers (not necessarily different)!

Input

The first input line contains an integer n (1?≤?n?≤?109).

Output

Print "YES" (without the quotes), if n can be represented as a sum of two triangular numbers, otherwise print "NO" (without the quotes).

Example

Input
256
Output
YES
Input
512
Output
NO

Note

In the first sample number 技术分享.

In the second sample number 512 can not be represented as a sum of two triangular numbers.

写得有点丑~~~

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 #include<math.h>
 5 #include<string>
 6 using namespace std;
 7 typedef long long ll;
 8 
 9 int n;
10 ll cal(ll ans){
11    return ans*(ans+1)/2;
12 }
13 
14 int main()
15 {  while(~scanf("%d",&n)){
16        int flag=0;
17        for(int i=1;i<=sqrt(2*n)+1;i++){
18               ll sum=n-cal(i);
19               ll l=i,r=sqrt(2*n)+1;
20               ll mid;
21               while(l<r){
22                     mid=(l+r)/2;
23                     if(cal(mid)==sum){
24                          flag=1;
25                          break;
26                     }
27                     if(cal(mid)<sum) l=mid;
28                     else r=mid;
29                     if(r-l==1){
30                          if(cal(r)==sum||cal(l)==sum){
31                              flag=1;
32                              break;
33                          }
34                          else break;
35                     }
36               }
37               if(flag) break;
38        }
39        if(flag) printf("YES\n");
40        else printf("NO");
41    }
42 }

 

以上是关于Funky Numbers CodeForces - 192A的主要内容,如果未能解决你的问题,请参考以下文章

CodeForces 55D Beautiful numbers

[codeforces 55]D. Beautiful numbers

Lucky Numbers (easy) CodeForces - 96B

CodeForces - 55D Beautiful numbers

CodeForces - 1520B Ordinary Numbers

CodeForces - 55D Beautiful numbers (数位DP)