一个C语言问题..输入两个整数a和n,计算下面表达式的值。

输入两个整数a和n,计算下面表达式的值。

输入
两个整数a和n。(1≤n≤14,1≤a≤9)

输出
表达式的值。

样例输入
2 4
样例输出
2468

根据题目给出的表达式,可以得到一个递推式:

sum = a + aa + aaa + …… + aa...a(共n个a)

其中,aa...a表示a重复n次。

为了方便计算,我们可以将每一项拆开来单独计算,然后将它们相加。具体来说,对于第i项,它的值为 ai = a*10^(i-1) * (1+10+(10^2)+...+(10^(n-i)))。

这个求和公式可以转化为等比数列求和公式:1+10+10^2+...+10^(n-i)=(10^(n-i+1)-1)/9。因此,第i项的值为ai=a*10^(i-1)*(10^(n-i+1)-1)/9。

最终的结果即为所有项的和:sum = a*1 + a*11 + a*111 + ... + a*[11...1(共n位)]。

根据上述方法进行程序实现,可以得到以下代码:

```c++
#include <iostream>
#include <cmath>

using namespace std;

int main() {
int a, n;
cin >> a >> n;
int sum = 0;
int term = a;
for (int i = 1; i <= n; i++) {
sum += term;
term = term * 10 + a;
}
cout << sum << endl;
return 0;
}
```

输入样例:
```
2 4
```

输出样例:
```
2468
```
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-06
什么表达式?追问

追答

#include
#include
int main()
{
int a,n,i;
int sn,bn;
sn=bn=0;
scanf("%d,%d",&a,&n);
for(i=0;i<n;i++)
{
bn+=a*(int)pow(10,i);
sn+=bn;
}
printf("%d",sn);
return 0;

}

相似回答
大家正在搜