hdu2007

返回“大学生程序设计竞赛”

平方和与立方和

http://acm.hdu.edu.cn/showproblem.php?pid=2007

/*write by ASUN*/
#include"stdio.h"
void main()
{
    long int n,m;
    double sumj,sumy;
    while(scanf("%ld%ld",&m,&n)!=EOF)
    {
        sumj=sumy=0;
        if(m>n) //有可能n小于m,这点题目没有将清楚
        {
            m=m+n;
            n=m-n;
            m=m-n;
      }
        for(;m<=n;m++)
        {
            if(m%2==1)
                sumj+=m*m*m*1.0;
            else
                sumy+=m*m*1.0;
        }
        printf("%.0lf %.0lf\n",sumy,sumj);
    }
}
/*written by czk*/
#include <stdio.h>

int square_sum(int n) {
    return n*(n+1)*(2*n+1)/6;
}

int cube_sum(int n) {
    return n*(n+1)/2*n*(n+1)/2;
}

int sum(int n) {
    return n*(n+1)/2;
}

/* cube sum of 1, 3, 5,...,(2*n-1) */
int odd_cube_sum(int n) {
    return 8*cube_sum(n) - 12*square_sum(n) + 6*sum(n) - n;
}

int main() {
    int m, n;
    while(scanf("%d%d", &m, &n)!=EOF) {
        if(n < m) {
            int temp = m;
            m = n;
            n = temp;
        }
        printf("%d ", 4*(square_sum(n/2)-square_sum((m-1)/2)));
        printf("%d\n", odd_cube_sum((n+n%2)/2)- odd_cube_sum( (m-m%2)/2));
    }
}