您的位置:首页 > 编程语言 > C语言/C++

数字阶梯求和

2016-06-21 23:26 253 查看
题目描述:

给定a和n,计算a+aa+aaa+a…a(n个a)的和。

输入:

测试数据有多组,输入a,n(1<=a<=9,1<=n<=100)。

输出:

对于每组输入,请输出结果。

样例输入:

1 10

样例输出:

1234567900

//下面的实现方法,时间复杂度为O(n)

#include <iostream>
using namespace std;

//算法描述:
//                  a
//                 aa
//                aaa
//               aaaa
//              aaaaa
//             aaaaaa
//            aaaaaaa
//-------------------
//         a........(n-1)*a  n*a
//将上述的每个数字存在一个n+1维的数组中,在对每个元素进行进位。
//------------------------------------------------------------

//实现进位
void dec(int *num,int n)
{
for(int i=0; i<n; i++)
{
num[i+1]+=num[i]/10;
num[i]=num[i]%10;
}
}
int myPow(int n)
{
int num=1;
for(int i=0; i<n; i++)
{
num*=10;
}
return num;
}
int compute(int a, int n,int *num)
{
for(int i=0; i<n; i++)
{
num[i]=a*n-i;
}
num
=0;
dec(num,n);
int sum=0;
for(int i=0; i<=n; i++)
{
sum+=num[i]*myPow(i);
//cout<<sum<<endl;
}
return sum;
}
int main()
{
int a=0,n=0;
int sum=0;
cin>>a>>n;
if(a<=9&&a>=1&&n>=1&&n<=100)
{
int *num=new int[n+1];
sum=compute(a,n,num);
cout<<sum<<endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息