問題:
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);
}