问题标题:
一道很有意思的数学题!!将1——2001这两千零一个自然数依次写成一行,组成一个新的自然数,求新的自然数除以9的余数(要有过程)
问题描述:
一道很有意思的数学题!!
将1——2001这两千零一个自然数依次写成一行,组成一个新的自然数,求新的自然数除以9的余数(要有过程)
杜晓荣回答:
inti=0
longsum=0;
inta=0;
for(i=0;i
马科回答:
楼上正解
自然数除以9,余数就等于各位数字之和除以9
何德安回答:
这个题可以用同余解的,你可以上百度白科去找弃九验算法这东西,反正是证明出了1个十进制数除以9的余数等于这个数个各位之和除以9的余数.有了这个规律,这个题就好算多了~~~~~~~~~~~~~用1+2+3........+1+9+9+9+2+0+2+1~~~~算出来然后再除以9就是答案.我懒得算~~~~~~~LZ自己算吧
李琪林回答:
我对题目的理解是:
把1234...2001放到一起,变成
12345678910111213...2001然后求余数对吗?
如果是这样的话,就用程序模拟小学学的除法手算法就可以了...
intres=0;//结果
inttemp;//下次需要的倍数
for(inti=1;i=1000){
temp=10000;
}
elseif(i>=100){
temp=1000;
}
elseif(i>=10){
temp=100;
}
else{
temp=10;
}
res=(res*temp+i)%9;
}
运算过程是
第1次循环:
res=0i=1那么,temp=10
res=(res*temp+i)%9=1
第2次循环:
res=1i=2那么,temp=10
res=(1*10+2)%9=3
第3次循环:
res=3i=3那么,temp=10
res=(3*10+3)%9=6
.
.
.
第10次循环
res=a(我就不写了)i=10那么,temp=100
res=(a*100+10)%9=?(我就不细写了,只是写一下运算的逻辑过程)
.
.
.
第2001次循环
res=b(我就不写了)i=2001那么,temp=10000
res=(b*10000+2001)%9=?(我就不细写了,只是写一下运算的逻辑过程)
不知道是不是说清楚了,呵呵。
程序我没测过,如果有什么问题,就给我消息或补充你的问题吧。
查看更多