题解:这里要用到公式在下图中
简单的题解是只需判断 n==1或者24
你可以在1000个数中去验证,代码如下:
#include <iostream>
#include <cmath>
int main()
{
int sum;
double P;
sum=0;
for(int n=1;n<=1000;n++){
sum=n*(n+1)*(2*n+1)/6;
P=sqrt(sum);
if((int)P*P==sum)
printf("%d %d\n",n,sum);
}
}
运行结果:
可能你认为太绝对了,是巧合等类型的话语,你可以想一下题意是10的15次方,这样的数想不爆栈都难。所以一定有规律,因此找呗。如果要证明:连接
刚才推导平方和、立方和公式有点头疼,就不在这推导了。
//AC代码:
#include<stdio.h>
using namespace std;
int t, n;
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
if( (n== 1) || (n==24)) printf("Fake news!\n");
else printf("Nobody knows it better than me!\n");
}
return 0;
}