请大家帮忙检查一下这道题目~!~
求S=a+aa+aaa...的值,a表示一个数,n表示a的位数,为这个题目编一个程序我的程序:
#include "math.h"
#include "stdio.h"
#include "conio.h"
main()
{
int a,i,n,p,tn;
long sn;
sn=0;
printf("a,n=:");
scanf("%d,%d",&a,&n);
for(i=1;i<=n;++i)
{
p=n-i;
tn=a*i*pow(10,p);
sn=sn+tn;
}
printf("a+aa+aaa+...=%ld\n",sn);
getch();
}
我的本意是每个数位有多少个a相加,然后再相加,例如2+22+222,我想的是百位有一个2,十位有两个2,个位有三个2,即sn=1*2*10^2+2*2*10^1+3*2*10^0,
所以对于原题,每个数位对应的和是tn=i*a*(10^(n-i)),最后将各个数位的和相加就得到sn.
请问我这种想法是不是有错误???我运行后结果都不对的~!~!
请各位大侠帮我看看我的程序是不是有错??具体错在哪里??请指出~~~
我已经看过网上的好多种方法,不过还是想验证下自己的这种想法,结果就出错啦,找了很久都不知道错在哪里~~~~~
先谢谢啦~!~!
(具体错误是计算出来的数比正确答案少1或者2),这一点我怎么都不懂
[ 本帖最后由 logoxx 于 2009-9-6 18:02 编辑 ]