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];
else
sum += "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;
}