问题标题:
一道很有意思的数学题!!将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=?(我就不细写了,只是写一下运算的逻辑过程)   不知道是不是说清楚了,呵呵。   程序我没测过,如果有什么问题,就给我消息或补充你的问题吧。
查看更多
数学推荐
热门数学推荐