本帖最后由 bin554385863 于 2019-11-12 12:03 编辑
根据观察
a(n) = ((pow(10 , n)-1) / 9) * a。
上班中写个伪代码:int sum = tmp = a =n = 0;
for (i = 0; i <= n; i++)
{
tmp=((pow(10 , i)-1) / 9);
sum += tmp;
}
printf("%d", a * sum);
完整代码#include <stdio.h>
#include <math.h>
/*求sn=a+aa+aaa+......+aa..a(n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222 此时n=5,n又键盘输入。
a(n) = ((pow(10, n) - 1)/9)*a, sum += a(n).
*/
typedef size_t sz;
int main(int argc, char *argv[])
{
int a = 0, n = 0, sum = 0, tmp = 0;
while (1)
{
sum = 0;
printf("请输入基数和最大位数以空格隔开\n");
scanf("%d%d", &a, &n);
if (a <= 0 || n <= 0) //如果a或n有一个是小于等于0则结束循环
{
printf("程序结束\n");
break;
}
for (sz i = 0; i <= n; i++)
{
tmp = (pow(10, i) - 1) * a / 9;
sum += tmp;
}
printf("%d\n\n", sum);
}
return 0;
}
-------------------------------------------------------------------------------------------------
Microsoft Windows [版本 10.0.18363.418]
(c) 2019 Microsoft Corporation。保留所有权利。
E:\Users\admin\Documents\VScode>c:\Users\admin\.vscode\extensions\ms-vscode.cpptools-0.26.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-ucfax24e.z3j --stdout=Microsoft-MIEngine-Out-1m0jhfgs.gh0 --stderr=Microsoft-MIEngine-Error-dd3ihwpz.blm --pid=Microsoft-MIEngine-Pid-by1kxg0o.ltk --dbgExe=D:\MinGW\bin\gdb.exe --interpreter=mi
请输入基数和最大位数以空格隔开
1 9
123456789
请输入基数和最大位数以空格隔开
1 4
1234
请输入基数和最大位数以空格隔开
1 2
12
请输入基数和最大位数以空格隔开
0 0
程序结束
E:\Users\admin\Documents\VScode> |