應該注意到一個細節是題目中沒有說明輸入的兩個數據必定是先小後大的關係,因此須要作一次判斷。其餘的比較簡單。php
#include<iostream> #include<string> #include<stdio.h> #include<stdlib.h> #include<ctype.h> using namespace std; int j_sum[100005]={0}; int o_sum[100005]={0}; int main() { int a,b; int i,j; //對全部的奇數,用數組j_sum保存好當前奇數往前全部奇數的立方和 j_sum[1]=1; for(i=3;i<10005;i+=2) { j_sum[i]=j_sum[i-2]+i*i*i; } //對全部的偶數,用數組o_sum保存好當前偶數往前全部偶數的平方和 o_sum[0]=0; for(i=2;i<10005;i+=2) { o_sum[i]=o_sum[i-2]+i*i; } while(scanf("%d %d",&a,&b)!=EOF) { //這裏要注意題目中沒有說明輸入的兩個數的大小關係,因此須要作一次判斷 if(a>b) { int tmp=a; a=b; b=tmp; } int sum1=0,sum2=0; int j1,j2,o1,o2;//保存該區間最左端奇數最右端奇數和最左端偶數最右端偶數 if(a%2==0) { o1=a-2; j1=a-1; } else { j1=a-2; o1=a-1; } if(b%2==0) { o2=b; j2=b-1; } else { j2=b; o2=b-1; } printf("%d %d\n",o_sum[o2]-o_sum[o1],j_sum[j2]-j_sum[j1]); } return 0; }
這裏我發現目前尚未遇到TLE的題目,即基本都仍是十分基礎十分簡單的暴力便可求解的題目。因此上面代碼中複雜的先求出全部數之和再作減法貌似有點多餘。數組