不是很好做,我试过很多代码
#include <stdio.h>
#include <math.h>
int main()
{
int i,n=1,sum=0;
while(~scanf("%d",&n)) {
if(n%2!=0){
for(i=1; i<=n; i=i+2)
{
sum+=i*i;
}
if(sum<=pow(2,63)-1){
printf("%d\n",sum);}}
}}
```c
#include<stdio.h>
int main()
{
long long i,n;
while(scanf("%lld",&n))
{
long long sum=0;
for(i=1;i<=n;i+=2)
sum+=i*i;
printf("%lld\n",sum);
}
return 0;
}
VS上正确,测试不通过
```
他的范围是2的63次方,建议用长整型,或者double型,你去试试。现在没带电脑,没发给你测试。
可以用高精度乘法+数学解决,数学就是想算出从1到n的平方和n(n+1)(2n+1)/6在减掉所有偶数的平方和,如果有x个偶数,那么平方和就应该是4(x+1)(2x+1)/6