英语配音片段2人十分钟:求2004的2004次方加上2005的2005次方的结果.

来源:百度文库 编辑:查人人中国名人网 时间:2024/03/29 17:51:55
请给算法!~

你是不是要算这题还是别的...

6. 有一串数:1,2^2,3^3,4^4 ,………2004^2004,2005^2005,2006^2006。大明从左到右依次计算前面1003个数的末位数字之和,并且记为a,小光计算余下的1003个数的末位数字之和,并且记为b,则a-b=( )

(A)-3 (B)3 (C)-5 (D)5

6.C 第4项至第1003项的末位数字之和和第1004项至第2003项末位数字之和相同
a-b≡1+2^2+3^3-(2004^2004+2005^2005+2006^2006)≡1+4+7-(6+5+6)≡-5(mod10)

如果不是这题最好用C语言来做:

程序代码(C语言):

#include
#include
#include
#include

#define nMAX 100000

void solve(char *s)
{
int length;
int low,high,mid;

//对于2的2次方,特别处理
sscanf(s,\"%d\",&mid);
if( mid == 4 )
{
printf(\"%d\\n\",2);
return;
}

//以下为正常的计算
length = strlen( s );
low = 1;
high = nMAX;

while( low<=high )
{
int temp;
mid = (low+high) / 2;
temp = (int)(mid*log10(mid)) + 2;
if( temp == length )
{
//假定输入的都是合法的
printf(\"%d\\n\",mid);
return;
}
else if( temp > length )
high = mid-1;
else
low = mid+1;
}
printf(\"Impossible\\n\");
}

int main()
{
int bufsize;
char *buf;

bufsize = (int)(nMAX*log10(nMAX)) + 2;
buf = malloc( bufsize );
if( !buf )
exit( -1 );

while( fgets(buf, bufsize ,stdin) )
{
if( strcmp(buf, \"\") == 0 )
continue; //忽略空行
solve( buf );
}
}

2004^2004+2005^2005
=2004^2004+(2004+1)^(2004+1)
即使是算出了结果,
也只能用次方来表示而已。