啊我摔倒了..有没有人扶我起来学习....
题目
问:求Sn=a+aa+aaa+aaaa+aaaaa+...
的前n
项之和,其中a
是一个数字
输入描述:
输入一个整数a
,表示每项的每一位数;输入一个整数n
,表示有n
项
输出描述:
前n
项之和
示例
输入2
5
输出24690
(2+22+222+2222+22222)
解法
1. 确定思路
- 我们就拿示例来分析分析
- 首先,
a
不管输入是什么,在输入那一刻就已经决定了 n
表示一共有n
项,而且都是一位数开始,到n
位数结束- 再画个图,可以发现,后一个数都是前一个数的十倍再加上前一个数
(10 * a + a)
2. 编写代码
- 根据上述的思路,
n
表示有n
项,那我们就来个循环,循环一次就多一个项
scanf("%d%d", &a, &n);
for (i = 0; i < n; i++)
{
//......
}
- 既然后一个数都是前一个数的十倍再加上前一个数,直接上
(10 * a + a)
。然后每一次循环都要变化一次,所以就用a
来储存起来
for (i = 0; i < n; i++)
{
tmp = tmp * 10 + a;
//......
}
- 再根据题目,需要求前
n
项之和,好办,定义一个sum
for (i = 0; i < n; i++)
{
tmp = tmp * 10 + a;
sum += tmp;
}
- 这样就设计出来了~我们测试一下
附上整个代码:输入2
5
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = 0;
int n = 0;
int i = 0;
int sum = 0;
int tmp = 0;
scanf("%d%d", &a, &n);
for (i = 0; i < n; i++)
{
tmp = tmp * 10 + a;
sum += tmp;
}
printf("%d\n", sum);
return 0;
}
输出结果:
成功成功~收工!