首页 > 其他 > 详细

S_n=a+aa+aaa+...+aa+...+a之值,其中a是一个数字,n表示a的位数,n由键盘输入。例如:

时间:2020-07-21 21:43:49      阅读:88      评论:0      收藏:0      [点我收藏+]

\(S_n\)=a+aa+aaa+...+\(\overbrace{aa+\dots+a}^{n个a}\) 之值,其中a是一个数字,n表示a的位数,n由键盘输入。例如:

2+22+222+2222+22222 (此时n=5)

答案解析:

该题目可以将数字拆分为 a * 10^n + 前一个数字,例如:

2 = 2 * 10^0 + 0 : 默认2的前一个数字为0,也就是没有任何值

22 = 2 * 10^1 + 2 : 22的前一个数字为2

222 = 2*10^2 + 22 :222的前一个数字为22

以此类推...

所以,在每次循环的时候,需要保存下,上一次结果的值,方便下一次计算

还需要使用到C库当中使用的pow函数,来计算某个数的n次方,我们在该题目当中使用的是10的n次方,n随着循环的次数,以此递增。

代码示例:

#include <stdio.h>
#include <math.h>

int main()
{
	//n为a的个数
	int n;
	double a, prev_sum = 0.0, total_sum = 0.0;
	printf("请输入a的值以及n的值: ");
	scanf("%lf %d", &a, &n);
	//循环n次求总和
	for (int i = 0; i < n; i++)
	{
		prev_sum += a * pow(10, i); 
		total_sum += prev_sum;
	}
	printf("总和为:%lf\n", total_sum);
	return 0;
}

运行截图:

技术分享图片

S_n=a+aa+aaa+...+aa+...+a之值,其中a是一个数字,n表示a的位数,n由键盘输入。例如:

原文:https://www.cnblogs.com/vs2019/p/13356577.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!