|
发表于 2019-11-12 08:56:06
From FishC Mobile
|
显示全部楼层
本帖最后由 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> |
|