计算a+aa+aaa+...+ aa...a(n 个a),输入a 和 n 的值,并输出结果。用c语言
时间: 2023-05-27 15:08:03 浏览: 74
#include <stdio.h>
int main() {
char a;
int n;
long long sum = 0, cur = 0;
scanf("%c %d", &a, &n);
for(int i = 0; i < n; i++) {
cur = cur * 10 + (a - '0');
sum += cur;
}
printf("%lld", sum);
return 0;
}
相关问题
计算a+aa+aaa+...+aa...a 计算a+aa+aaa+...+aa...a(n个a)的值
要计算a+aa+aaa+...+aa...a(n个a)的值,可以使用以下公式:
s = a + 11*a + 111*a + ... + (n个1)*a
可以将每一项看作是一个等比数列的一项,公比为10,首项为a,因此可以使用等比数列求和公式:
s = a*(10^n-1)/9 * (1+11+111+...+(n个1))
其中,1+11+111+...+(n个1)可以使用等差数列求和公式:
1+11+111+...+(n个1) = (10^n-1)/9
将其代入前面的公式,得到:
s = a*(10^n-1)/9 * (10^n-1)/9
化简后得到:
s = a*(10^n-1)*(10^n+1)/81
因此,可以使用这个公式来计算a+aa+aaa+...+aa...a(n个a)的值。
输入两个正整数a和n,输出a+aa+aaa+...+aaa..aaa 输入格式: 输入两个正整数 a和n,空格分隔 输出格式: a+aa+aaa+...+aaa..aaa=值 (如果是非法数据没有输出)
可以使用循环来实现这个功能,具体实现如下:
```
#include <stdio.h>
int main() {
int a, n;
scanf("%d %d", &a, &n);
if (a <= 0 || n <= 0) { // 判断非法数据
printf("非法数据\n");
return 0;
}
int sum = 0, temp = a;
for (int i = 1; i <= n; i++) {
sum += temp;
temp = temp * 10 + a;
}
printf("%d\n", sum);
return 0;
}
```
首先读入两个正整数a和n,然后判断是否为非法数据,如果是则输出“非法数据”,否则使用循环计算a+aa+aaa+...+aaa..aaa的值,其中temp变量用来记录当前的aaa..aaa,每次循环更新temp的值,sum变量用来记录总和。最后输出sum的值即可。
阅读全文