浙大PAT 2-06. 数列求和 (解题思路)

来源:互联网 发布:计算机中的数据是指 编辑:程序博客网 时间:2024/04/27 17:55

2-06. 数列求和

时间限制
50 ms
内存限制
32000 kB
代码长度限制
8000 B
判题程序
Standard

给定某数字A(1<=A<=9)以及非负整数N(0<=N<=100000),求数列之和S = A + AA + AAA + … + AA…A(N个A)。例如A=1, N=3时,S = 1 + 11 + 111 = 123。

输入格式说明:

输入数字A与非负整数N。

输出格式说明:

输出其N项数列之和S的值。

样例输入与输出:

序号输入输出1
1 3
123
2
6 100
7407407407407407407407407407407407407407407407407407407407407407407407407407407407407407407407407340
3
1 0
0


//算法写的不好很容易超时


#include <iostream>#include <string.h>using namespace std;string sum = "0";int main(){int A, N;cin>>A>>N;int i, j = 0;if(A == 0 || N == 0){cout<<"0"<<endl;return 0;}int tem = 0;char tc[20] = "";for(i = N; i >= 1; --i){tem += A*i;sprintf(tc, "%d", tem);if(strlen(tc) > 1)sum += tc[strlen(tc)-2];elsesum += "0";sum[j] = tc[strlen(tc)-1];tem /= 10;j++;}bool zero = true;for(i = sum.size()-1; i >= 0; --i){if(sum[i] != '0')zero = false;if(!zero)cout<<sum[i];}cout<<endl;return 0;}



0 0