不是很好做,我试过很多代码

不是很好做,我试过很多代码

img


这个网站可以测试:
http://acm.usx.edu.cn/aspnet/Question.aspx?qid=1964
我的代码如下

#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