题目描述:

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

输入:

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

输出:

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

样例输入:
1 10
样例输出:
1234567900

从题中就可以看出,当a = 9, n = 100的时候,一个int类型的数是存不下100位的数,所以不能运用平常的方法来求,下面介绍我的解法,我声明一个向量v用来存储a+aa+aaa+a...a(n个a)的和,temp是用来存储a...a(n个a)的,从个位向高位分别相加,hight用来存储进位的。

[cpp] view plaincopyprint?
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4. int main(){
  5. int a, n;
  6. int sum = 0;
  7. vector<int> v;
  8. vector<int> temp;
  9. vector<int>::iterator it;
  10. int hight = 0; //存储进位
  11. while(cin >> a >> n){
  12. v.clear();
  13. temp.clear();
  14. v.push_back(a);
  15. temp.push_back(a);
  16. for(int i = 2; i <= n; i++){
  17. temp.push_back(a);
  18. int j = temp.size() - 1;
  19. int k = v.size() - 1;
  20. hight = 0;
  21. sum = 0;
  22. while(k >= 0 && j >= 0){ //从低位向高位相加
  23. sum = temp[j] + v[k] + hight;
  24. hight = 0;
  25. if(sum > 9){
  26. hight = sum / 10; //求进位
  27. }
  28. v[k] = sum % 10;
  29. k--;
  30. j--;
  31. }
  32. //if(hight > 0){
  33. while(j >= 0){ //可能要加的数比总的位数还要多,比如 9  + 99;
  34. sum = temp[j] + hight;
  35. hight = 0;
  36. if(sum > 9){
  37. hight = sum / 10;
  38. }
  39. v.insert(v.begin(), sum % 10);
  40. j--;
  41. }
  42. if(hight > 0){//如果还有进位,那就放到最高位
  43. v.insert(v.begin(), hight);
  44. }
  45. //}
  46. }
  47. for(it = v.begin(); it != v.end(); it++){
  48. cout << *it;
  49. }
  50. cout << endl;
  51. }
  52. return 0;
  53. }

结果:a = 9 n = 200,a+aa+aaa+a...a = 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110910

下面有个人给出了更简单的解法:直接模拟小学加法从个位数开始加,该进位的进位,然后存到一个栈里面,最后出栈输出就完事了,代码:

[cpp] view plaincopyprint?
  1. #include <cstdio>
  2. #include <stack>
  3. using namespace std;
  4. int main()
  5. {
  6. //    freopen("1.txt", "r", stdin);
  7. int a, n, i, t, c;
  8. while(~scanf("%d %d", &a, &n))
  9. {
  10. stack<int> S;
  11. for(c=0,i=1; i<=n; i++)
  12. {
  13. t = (n-i+1)*a;
  14. S.push((t+c)%10);
  15. c = (t+c)/10;
  16. }
  17. if(c>0)
  18. S.push(c);
  19. while(!S.empty())
  20. {
  21. printf("%d", S.top());
  22. S.pop();
  23. }
  24. printf("\n");
  25. }
  26. return 0;
  27. }

但是这个有个缺点,就是当n好大,t = (n - i + 1) * a 会溢出,这个程序的有点是运行速度很快,我上面的代码当n比较大的时候,运行速度很慢。但不会溢出。

给定a和n,计算a+aa+aaa+a...a(n个a)的和(大数据处理)相关推荐

  1. 给定a和n,计算a+aa+aaa+aaaa+...+a...a(n个a) 的和

    看到一道题,感觉挺有意思的,拿来解解.题目描述如下: 题目详情: 给定a和n,计算a+aa+aaa+aaaa+...+a...a(n个a) 的和. 输入描述: 测试数据有多组,以文件结尾.每行输入a, ...

  2. C++练习11:计算a+aa+aaa+aa…a+…

    C++练习11:计算a+aa+aaa+aa-a+- 题目 方法1(for循环) 方法2(while循环) 题目 输入2个正整数a和n,计算a+aa+aaa+aa-a+-例如,输入2和3,计算2+22+ ...

  3. 【Python基础题9】计算a + aa + aaa + aaaa的值

    #计算a + aa + aaa + aaaa的值 print('请输入一个数字:') a = input() n1 = int( "%s" % a ) n2 = int( &quo ...

  4. 计算a+aa+aaa+...

    计算a+aa+aaa+aaaa+...,例如,当a=2时,计算前5项和就是计算2+22+2222+22222. 首先我们要构造这样的数,很明显,22222=2+2^10+2^100+2^1000+2^ ...

  5. 计算 a+aa+aaa+aaaa+aaaaa+ 的和_海南A级景区,三亚市就有14个,你都去过吗

    日前,海南省旅游资源规划开发质量评定委员会发布2020年第2号和2020年第3号公告,海南长影环球100奇幻乐园批准为国家4A级旅游景区,海南霸王岭国家森林公园和桂林洋国家热带农业公园批准为国家3A级 ...

  6. c语言,计算a+aa+aaa+......,使用函数定义的方法

    #include<stdio.h> int fn(int a,int n);//函数定义 int main(void) {          int a,n,sum=0,i,t;      ...

  7. [C题目]输入整数a和n,计算a+aa+aaa+aaaa+......(共有n项)

    规律:前一项乘以10加上a等于后一项.         1.sum为所有项累加之和的结果         2.k表示某一项的数值 #include <stdio.h> int main() ...

  8. python习题计算a+aa+aaa+aaaa的结果 lintcode题目

    方法一(最简单的方法): 方法二(for循环): Python for 循环可以遍历任何可迭代对象,如一个列表或者一个字符串. for循环一般格式:for 循环变量 in 可迭代对象: # 循环内容 ...

  9. C语言经典问题10-计算a+aa+aaa+...的值

    任务描述 本关任务:编写一个函数计算a+aa+aaa+-+aaaa-aa(n个a)的值,在主程序调用该函数进行输出.输出,其中a和n由键盘输入. 注意:通项 term = term * 10 + a ...

最新文章

  1. swift闭包 notes http://www.gittielabs.com
  2. 《深度学习的数学》二刷总结
  3. nginx php fpm 日志,nginx下php-fpm不记录php报错日志怎么办?
  4. 粒子群 多目标 matlab_matlab 粒子群求解三角形垂心位置
  5. 天池 在线编程 课程表(拓扑排序 + 回溯)
  6. mac开发配置手册(全)
  7. android 下拉刷新实现方式,Android RecyclerView设置下拉刷新的实现方法
  8. V神已抵京,倒计时4天!6大理由告诉你为什么要参加“2019以太坊技术及应用大会”...
  9. Spring boot中如何获取profiles环境
  10. 2018 KubeCon + CloudNativeCon成功召开
  11. WebQQ3.0体验
  12. ds18b20触摸没反应_关于DS18B20无法正常使用的问题
  13. (大数据应用考察)全国水资源分析可视化
  14. 新手小白~千元左右新手入门值得推荐的十款吉他
  15. 多人群聊聊天室java_#java 聊天室(一)—— 实现一个简单Telnet多人群聊聊天室...
  16. 8代u能装服务器系统吗,8代U安装win7,几代U支持win7
  17. 2017.11.15作业
  18. word饼图如何画引导线_#excel表格饼状图制作#如何在饼形图中添加引导线(Excel)...
  19. excel表格行宽列高怎么设置_解决方案:Excel自动调整列宽和行宽什么是快捷键? [Excel设置行高度自适应]...
  20. 小波变换(wavelet transform)的通俗解释(一)

热门文章

  1. 【转】详解Windows消息分类以及WM_COMMAND与WM_NOTIFY的区别,以及模拟发送控件通知消息
  2. 【转】算法导论学习笔记 一 分治算法
  3. php病毒图片后缀名,脚本图片类后门病毒的完美使用方法
  4. c语言哪个方法称为程序大门,学会这8个经典小程序,就相当于跨入了C语言大门...
  5. 运行mapreduce程序yarn的web端显示进度
  6. python syslog 接口_python接口测试之日志功能
  7. linux虚拟机上安装域名,虚拟机如何安装linux系统
  8. mysql创建数据库没有默认值报错_详解Mysql数据库date, datetime类型设置0000-00-00默认值(default)报错问题...
  9. AVR单片机计算器C语言源程序,AVR单片机简单计算器的Proteus仿真实现+源码
  10. cass生成曲线要素文件_几种常见的CASS字体异常问题,教你如何解决