求a+aa+aaa+…+aa…a 之和
描述
求Sn=a+aa+aaa+…+aa…a 之和,其中a是一个数字,n表示a的位数,例如:2+22+222+2222+22222(此时n=5)。
输入
第一行是一个正整数m,表示测试数据的个数。下面是 m对测试数据(第一个数据是a的值,第二个数据是n的值,其中0<=n<=9,数据之间用一个空格隔开),每行一对测试数据,共m行)。
输出
对每个测试数据,输出一行。每一行形式如下a+aa+aaa+...=24690注意,a+aa+aaa+...中的a无需换成a的值。后面的省略号直接输出。
输入样例 1
1 2 5
输出样例 1
a+aa+aaa+...=24690
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long m, a, n, t;
cin >> m; // 读取测试用例的数量
while (m--)
{
cin >> a >> n; // 读取 a 和 n
long long s = 0 , t = 0;
// 计算和生成字符串
stringstream result; // 用于构造结果字符串
for (int i = 1; i <= n; i++)
{
// 计算当前的 s 值
s = s * 10 + a; // 生成 a, aa, aaa, ...
t += s;
// 生成结果字符串
for (int j = 0; j < i; j++)
{
result << "a"; // 逐步构建 aa, aaa, ...
}
if (i < n) // 在最后一项后面不加 +
result << " + ";
}
// 输出最终格式
if (n < 4) {
cout << result.str(); // 直接输出结果
cout << "=" << s << endl; // 输出等式的结果
} else {
cout << "a+aa+aaa+...=" << t << endl; // 输出等式的结果
}
}
return 0;
}
如有侵权,联系删除