问题:

215 = 32768 and the sum of its digits is 3+ 2 + 7 + 6 + 8 = 26.

What is the sum of the digits of the number 21000?


解决思路:

粗略估计,21000是一个300多位的数,所以用数组来存储每一位的方式来表示。

设置数组a[500]a[0]表示个位,初值为2,设置变量i,用来表示当前最高位,进行999次乘2操作,每次操作如下进位操作,a[k+1]=a[k]/10+a[k+1]a[k]=a[k]-a[k]/10*10,如果a[i+1]>0,则i=i+1,表示最高位有进位。最后将每一位数相加即为所求。


代码如下:

#include<stdio.h>

void main()

{

         inta[500];

         inti=0;

         intj=0;

         intk=0;

         intsum=0;

         for(j=0;j<500;j++)

         {       

                  a[j]=0;

         }

         a[0]=2;

         for(j=1;j<1000;j++)

         {       

                   for(k=0;k<i+1;k++)

                   {       

                            a[k]=a[k]*2;

                   }

                   for(k=0;k<i+1;k++)

                   {

                            a[k+1]=a[k]/10+a[k+1];

                            a[k]=a[k]-a[k]/10*10;

                   }

                   if(a[i+1]>0){ i=i+1; }

         }

         for(j=i;j>=0;j--)

         {       

                   sum=sum+a[j];

         }

printf("%d ",sum);

}