k是循环变量,从0到i.
i是输入的位数,即1的个数。如果加到1111,则i=4,k=0,1,2,3
n是求和的每一项。
i=0时,n=1
i=1时,n=10*1+1=11
i=2时,n=10*11+1=111
i=3时,n=10*111+1=1111
明白了?
我昨天刚做了个题,是“求s=a+aa+aaa+…+aa…a(n个a)之值,其中a是一个数字,n表示a的位数,例如:2+22+222+…+22222(此时n=5)”
我是这样做出来的哈:
#include
#include
void main()
{
int a,n,b,s;
scanf("%d%d",&a,&n);
b=a;
s=0;
while(b {
s=b+s;
b=10*b+a;
}
printf("%d\n",s);
}
说明下,我用那个10得n次方不会,所以就用了pow函数,那个本来不用数学函数的。
不知道这个答案对楼主有帮助没~因为这是C的代码,但是算法应该差不多吧!(这个我也不清楚,呵呵)
我知道答案是这个,谁能帮详细讲解一下
尤其是
for(int k=0;k{
h=h+n;
n=n*10+1;中k和h,n有什么关系
急!!!半小时内回答有加分!
--------------
for(int k=0;k{
h=h+n; //表示计算1+11+111+1111+····
n=n*10+1;//n表示下一项,1的下一个是11,11的下一个111,依此类推,而h表示把每一项加起来。
是这样的.通项an = 1/9[10^(n) - 1]
a1 = 1/9[10^(1) - 1] = 1
通项an = 1/9[10^(n) - 1]
a1 = 1/9[10^(1) - 1] = 1