数字阶梯求和
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)
给定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; } }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- C#递归算法之分而治之策略
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- C#算法之大牛生小牛的问题高效解决方法
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C#算法函数:获取一个字符串中的最大长度的数字
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C++联合体转换成C#结构的实现方法