计算1+2-3-4+5+6-7-8+9+10-11-12+…+1993+1994-1995-1996+1997+1998-1999-2000,最后结果是( )

我很想研究本题

原式=1+(2-3-4+5)+(6-7-8+9)+(10-11-12+13)+…+(1994-1995-1996+1997)+(1998-1999)-2000=1+0+0+…+0-1-2000=-2000,故选(D)。

以上解法我们权且称作不均匀分组法。下面我们再给出几种不同解法。

解法一:观察法

∵1+2-3-4=-4,1+2-3-4+5+6-7-8=-8,1+2-3-4+5+6-7-8+9+10-11-12=-12,…

经观察知,每一“片断”的代数和均为参加运算的最后一个数,故原式=-2000,选(D)。

解法二:小段均匀分组法

将式中每连续4个数分为一组,则有1+2-3-4=-4,5+6-7-8=-4,9+10-11-12=-4,…,∴2000÷4=500(组),故原式=500×(-4)=-2000。

解法三:凑零法

∵-0+1+2-3=0,-4+5+6-7=0,…,-1996+1997+1998-1999=0,∴原式=0+0+…+0-2000=-2000。

解法四:大段均匀分组法

按个位数0,1,2,3,…,8,9分为一大组,进行计算,则有

1+2-3-4+5+6-7-8+9=-0+1+2-3-4+5+6-7-8+9=1,

又10-11-12+13+14-15-16+17+18-19=-1

而-20+21+22-23-24+25+26-27-28+29=1

另外:30-31-32+33+34-35-36+37+38-39=-1,…

1990-1991-1992+1993+1994-1995-1996+1997+1998-1999=-1。

∴原式=1-1+1-1+…+1-1-2000=0+0+…+0-2000=-2000。

解法五:添数法

每一个方框数之和为-2,而这样的方框有1000个,将每个方框中添加2,故有:原式+2000=0。

∴原式=-2000。

解法六:隔数相加法

在1+2-3-4+5+6-7-8+9+10-11-12+…+1993+1994-1995-1996+1997+1998-1999-2000中

隔数相加:如1-3=-2,2-4=-2,5-7=-2,…,这样的数对共有1000对,∴原式=-2×1000=-2000。

解法七:倒序错位相加法

令1+2-3-4+5+6-7-8+…+1997+1998-1999-2000=T

∴有1+2-3-4+5+6-7-8+…+1997+1998-1999-2000

故2T=3-2003-2003+3=-4000,∴T=-2000。

以上几种解法各有千秋。繁简程度各异,仅体现了不同的思维方式,也展现了思维的广阔性和灵活性,有助于我们拓展视野。

参考资料:http://www.qzfx.cn/edu/ShowArticle.asp?ArticleID=542

温馨提示:内容为网友见解,仅供参考
第1个回答  2008-05-01
我给你个简单的程序,就可以方便的算出答案:
#include<stdio.h>
main()
{
int i=1,j,k=0;
do //do循环使它一直加减,直到2000
{
for(j=1;j<=2;j++) //这个循环是加
{
k+=i;
i++;
}
for(j=1;j<=2;j++) //这个循环是减
{
k-=i;
i++;
}
}while(i<=2000);
printf("%d\n",k);
}
第2个回答  2008-04-30
(1-3+5-7……)+(2-4+6……)
#include "iostream.h"

void main()
{
int i,j=1;
int s1=0,s2=0;
for(i=1;i<2000;i+=2)
{
j++;
s1=s1+i*pow(-1,j);
}
j=1;
for(i=2;i<=2000;i+=2)
{
j++;
s2=s2+i*pow(-1,j);
}
cout <<endl<<s1+s2<<endl;

在网吧做的 你看看吧 思路应该是这样的吧
第3个回答  2008-04-30
//---------------------------------------------------------------------------

#include <stdio.h>

int main(void)
{ int i,s=0,f=1;
for (i=1; i<=2000; i++) {
if (f==3) {
s-=i;

f++;
}
else if (f==4) {
s-=i;

f=1;
}
else{
s+=i;

f++;
}

}
printf("%d\n",s);
return 0;
}
//---------------------------------------------------------------------------
第4个回答  2008-04-30
#include<stdio.h>
main()
{int i k j=0;
for(i=1;i<=2000;i++)
{
j=i+j;
i=i*(-1);
}
printf("%d",j);
}
相似回答