回 帖 发 新 帖 刷新版面

主题:请求知道

数a求和(胡宁静)
 


题目描述:
求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制输入。
 


输入描述:
输入基数a和需要相加的个数n
 


输出描述描述:输出相加的结果,注意结果最后不需要回车换行
样式输入:
2 5
 


样式输出:
24690
 


以下是我编的程序,可是在提交的时候 显示的是 答案错误,请高手指教 为什么?










#include<stdio.h>
#include<math.h>
int main()
{
    int i,a,n,t=0,s=0;
    scanf("%d %d",&a,&n);
    for(i=1;i<=n;i++)
    {
        t+=a*pow(10,i-1);
        s+=t;
    }
    printf("%d",s);
    printf("\n");
    return 0;
}

输出相加的结果,注意结果最后不需要回车换行

回复列表 (共4个回复)

沙发

for(i=1;i<=n;i++)
    {
        t+=a*pow(10,i-1);
        s+=t;
    }
//这个能还原a+aa+aaa+aaaa+aa...a么?

板凳

怎么不能???
您有什么好的方法吗?请指教!

3 楼

for(i = 0; i <= n; i++)
    {
        t += a * pow(10, n - i) * i;
    }
//用pow(),你没发现有误差么;自己写个求指数的

4 楼

我修改了一下,通过了
#include<stdio.h>
#include<math.h>
int main()
{
    int i,a,n,t=0,s=0,r[10];
    scanf("%d %d",&a,&n);
        r[1]=a;
    for(i=2;i<=n;i++)
    {
        r[i]=r[i-1]*10+a;
        s+=r[i];

       
       
    }
    printf("%d",s+r[1]);
    //printf("\n");2+22+222+2222+22222
    return 0;
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册