给定两个均不超过9的正整数a和n,要求编写函数求a+aa+aaa++⋯+aa⋯a(n个a)之和。
函数接口定义:
int fn( int a, int n ); int SumA( int a, int n );
其中函数fn须返回的是n个a组成的数字;SumA返回要求的和。
裁判测试程序样例:
#include <stdio.h>
int fn( int a, int n );
int SumA( int a, int n );
int main()
{
int a, n;
scanf("%d %d", &a, &n);
printf("fn(%d, %d) = %d\n", a, n, fn(a,n));
printf("s = %d\n", SumA(a,n));
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
2 3
输出样例:
fn(2, 3) = 222
s = 246
解题思路
本题要求我们编写 fn 和 SumA 的函数,其中函数 fn 须返回的是 n 个 a 组成的数字;SumA 返回要求的和。例如输入样例里输入了 2 3,接着输出样例 fn(2, 3) = 222,s = 222 + 22 + 2 = 246。
先来解决 fn 函数。函数 fn 须返回的是 n 个 a 组成的数字,若输入的是 2 3,则返回 222,若输入的是 3 2,则返回 33。可以发现,返回的数都是一个结构,即 a+10a+100a+1000a+···,且加多少项 都由 n 来决定,所以可以使用 for 循环,循环 n 次,每一次循环加上前一个项的 10 倍,最后输出。
接着是 SumA 函数,SumA 返回所有项的和,而每一项的值是多少我们已经在 fn 函数中解决了,所以这个函数只需要将它们加起来并输出即可。利用 for 循环,循环 n 次,每一次加上当前 n 所对应的项的值,最后输出结果。
具体代码
int fn( int a, int n )
{
int item=0;//项的和
int b=1;
for(int i=0; i<n; i++)
{
item=item+a*b;
b=b*10;
}
return item;
}
int SumA( int a, int n )
{
int sum=0;
for(int i=1; i<=n; i++)
{
sum = sum + fn(a,i);
}
return sum;
}
这篇博客介绍了如何编写两个函数fn和SumA,fn用于计算由n个数字a组成的连续数字,SumA则计算这些数字的总和。通过示例解释了解题思路,包括使用for循环构造目标数字并累加求和,提供了具体实现这两个函数的代码片段。
1262

被折叠的 条评论
为什么被折叠?



