2的1000次方

問題:

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);

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章