问题:
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);
}