题目来源:码蹄集
https://matiji.net/exam/brushquestion/3/3181/1DC60EA6DF83A333301CFFE1407FBA59
参考程序:
#include<iostream>
#include<cmath>
using namespace std;
long long n,ans,m;
int main(){
cin>>n;
m=floor((sqrt(n*2+0.25)-0.5));//如上文高斯求和求范围
for(int i=1;i<=m;i++){
long long cnt=n-i*(i+1)/2;//求n-k1
long long cntt=floor((sqrt(cnt*2+0.25)-0.5));//求k2
if(cntt*(cntt+1)/2==cnt&&cnt!=0){//显然两个三角数都不可为零
cout<<"YES";
return 0;
}
}
cout<<"NO";//全都不是即没有
return 0;
}