給定a和n,計算a+aa+aaa+a...a(n個a)的和(大數據處理)

題目描述:

給定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. ??
  5. int?main(){??
  6. ????int?a,?n;??
  7. ????int?sum?=?0;??
  8. ????vector<int>?v;??
  9. ????vector<int>?temp;??
  10. ????vector<int>::iterator?it;??
  11. ????int?hight?=?0;?//存儲進位??
  12. ????while(cin?>>?a?>>?n){??
  13. ????????v.clear();??
  14. ????????temp.clear();??
  15. ????????v.push_back(a);??
  16. ????????temp.push_back(a);??
  17. ????????for(int?i?=?2;?i?<=?n;?i++){??
  18. ????????????temp.push_back(a);??
  19. ????????????int?j?=?temp.size()?-?1;???
  20. ????????????int?k?=?v.size()?-?1;??
  21. ????????????hight?=?0;??
  22. ????????????sum?=?0;??
  23. ????????????while(k?>=?0?&&?j?>=?0){?//從低位向高位相加??
  24. ????????????????sum?=?temp[j]?+?v[k]?+?hight;??
  25. ????????????????hight?=?0;??
  26. ????????????????if(sum?>?9){??
  27. ????????????????????hight?=?sum?/?10;?//求進位??
  28. ????????????????}??
  29. ????????????????v[k]?=?sum?%?10;???
  30. ????????????????k--;??
  31. ????????????????j--;??
  32. ????????????}??
  33. ??????????????
  34. ????????????//if(hight?>?0){??
  35. ????????????????while(j?>=?0){?//可能要加的數比總的位數還要多,比如?9??+?99;??
  36. ????????????????????sum?=?temp[j]?+?hight;??
  37. ????????????????????hight?=?0;??
  38. ????????????????????if(sum?>?9){??
  39. ????????????????????????hight?=?sum?/?10;??
  40. ????????????????????}??
  41. ????????????????????v.insert(v.begin(),?sum?%?10);??
  42. ????????????????????j--;??
  43. ????????????????}??
  44. ??????????????????
  45. ????????????????if(hight?>?0){//如果還有進位,那就放到最高位??
  46. ????????????????????v.insert(v.begin(),?hight);??
  47. ????????????????}??
  48. ????????????//}??
  49. ????????}??
  50. ??????????
  51. ????????for(it?=?v.begin();?it?!=?v.end();?it++){??
  52. ????????????cout?<<?*it;??
  53. ????????}??
  54. ????????cout?<<?endl;??
  55. ????}??
  56. ????return?0;??
  57. }??
結果:a =?9 n = 200,a+aa+aaa+a...a =?111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110910


下面有個人給出了更簡單的解法:直接模擬小學加法從個位數開始加,該進位的進位,然后存到一個棧里面,最后出棧輸出就完事了,代碼:

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

但是這個有個缺點,就是當n好大,t = (n - i + 1) * a 會溢出,這個程序的有點是運行速度很快,我上面的代碼當n比較大的時候,運行速度很慢。但不會溢出。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449899.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449899.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449899.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ssh和rsh的區別、Linux rsh命令

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 ssh 和 rsh的區別主要有: 1 安全級別不同, 主要是ssh的密碼等都是加密傳輸,而且還有密鑰認證的機制, rsh明文傳輸. 而且沒有密鑰的機制.…

Java并發編程(多線程)中的相關概念

眾所周知&#xff0c;在Java的知識體系中&#xff0c;并發編程是非常重要的一環&#xff0c;也是面試中必問的題&#xff0c;一個好的Java程序員是必須對并發編程這塊有所了解的。 并發必須知道的概念 在深入學習并發編程之前&#xff0c;我們需要了解幾個基本的概念。 同步和異…

4、容器虛擬化網絡概述

Docker 網絡 Docker 的網絡實現其實就是利用了 Linux 上的網絡名稱空間和虛擬網絡設備&#xff08;特別是 veth pair&#xff09;。 Linux 網絡命名空間&#xff1a;https://www.jianshu.com/p/369e50201bce Linux虛擬網絡設備之veth&#xff1a; https://segmentfault.com/a/1…

Linux whoami命令、Linux su命令、Linux w命令

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Linux whoami命令用于顯示自身用戶名稱。 顯示自身的用戶名稱&#xff0c;本指令相當于執行"id -un"指令。 語法 whoami […

Weekly 10

Algorithm 1.Remove Element What 移除數組中的指定元素,返回處理后的長度sum,并且數組前sum長度的元素為處理后的元素,不用額外數組&#xff0c;O(1)。How 用快慢指針,快指針遍歷,遇到不等于指定元素的替換掉慢指針,然后慢指針前進一位即可。Key Codesclass Solution {public …

大數據計算:如何僅用1.5KB內存為十億對象計數

摘要&#xff1a;AddThis的數據分析副總監Matt Abrams在High Scalability上發表了一篇文章&#xff0c;介紹了他們公司如何應對大數據。Matt Abrams表示&#xff0c;AddThis僅僅用了1.5KB內存的內存就計算了十億個不同的對象&#xff0c;這與他們所使用的計算方法分不開的。 A…

C#關鍵字的個人理解與注釋

C#關鍵字注釋&#xff1a;abstract&#xff1a;抽象as&#xff1a;類型轉換&#xff08;返回轉換結果&#xff09;base&#xff1a;基類bool&#xff1a;布爾類型break&#xff1a;條件中斷語句byte&#xff1a;字節case&#xff1a;條件語句catch&#xff1a;異常捕獲后執行ch…

Linux declare命令、Linux tail 命令

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Linux declare命令用于聲明 shell 變量。 declare為shell指令&#xff0c;在第一種語法中可用來聲明變量并設置變量的屬性([rix]即為變…

詳解Nagios配置文件的邏輯關系

1.主配置文件/usr/local/nagios/etc/nagios.cfg a.定義了用戶和組 b.定義了某些具體參數 c.定義了配置文件和可以存放配置文件的文件夾 d.通過開頭的#號去注釋選項以達到關閉配置的效果 e.更改配置后&#xff0c;可以通過命令 /usr/local/nagios/bin/nagios –v /usr/local/na…

10 步讓你成為更優秀的程序員

這篇文章要介紹的&#xff0c;是我作為專業程序員這些年來學到的能真正提高我的代碼質量和整體工作效率的10件事情。 1. 永遠不要復制代碼 不惜任何代價避免重復的代碼。如果一個常用的代碼片段出現在了程序中的幾個不同地方&#xff0c;重構它&#xff0c;把它放到一個自己的函…

《流浪地球》 電影全集

《流浪地球》 電影全集 《流浪地球》是由郭帆導演&#xff0c;吳京特別出演&#xff0c;屈楚蕭、李光潔、吳孟達等人主演的科幻片《流浪地球》宣布定檔2019大年初一。同時&#xff0c;影片發布了一款定檔預告片&#xff0c;預告片開頭傳來一段廣播聲音&#xff1a;“太陽急速老…

kotlin之plus、copyOf、reverse、forEach、filter、map、reduce、fold等函數解釋和使用

kotlin之::函數調用、plus&#xff08;增加元素&#xff09;、copyOf&#xff08;復制數組&#xff09;、reverse&#xff08;翻轉數組&#xff09;、forEach&#xff08;遍歷數組&#xff09;、filter&#xff08;過濾數組&#xff09;、map函數操作及擴展、reduce函數、fold函…

linux 常用命令 雜記

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1.cat cat 命令用于連接文件并打印到標準輸出設備上。 使用權限 所有使用者 2.Linux chgrp命令用于變更文件或目錄的所屬群組。 3.Linux…

C程序員要學C++嗎?

最近網友問到這一問題&#xff0c;但我更希望被問的是“C程序員需要學面向對象編程嗎&#xff1f;”&#xff0c;那就讓我先從回答這一問題開始&#xff0c;并做適當的擴展。 就我的成長經歷來看&#xff0c;C程序員必須學習面向對象編程&#xff01;面向對象編程語言有其天然的…

追女生心理研究(本人母胎單身,就是想做準備,并無其他意思)

聊天話題&#xff1a; 1。興趣愛好&#xff1a;美食&#xff0c;旅游&#xff0c;寵物等 2。現在和曾經的自己&#xff0c;分享自己的經歷 3。我變成我們&#xff0c;未來規劃 4。分析隱私&#xff0c;比如一些小秘密 5。價值觀&#xff0c;對未來的規劃等 聊天話題技巧 …

dlopen 和 dlsym 動態調用函數

Linux/unix 提供了使用 dlopen 和 dlsym 方法動態加載庫和調用函數&#xff0c;這套方法在 macOS 和 iOS 上也支持。dlopen 打開一個庫&#xff0c;獲取句柄。dlsym 在打開的庫中查找符號的值。dlclose 關閉句柄。dlerror 返回一個描述最后一次調用dlopen、dlsym&#xff0c;或…

通過騰訊地圖服務獲取行政區劃信息

接口說明地址&#xff1a; https://lbs.qq.com/webservice_v1/guide-region.html 以下是源代碼及表創建腳本。 源碼及相關文件下載轉載于:https://www.cnblogs.com/challengesoflife/p/10405366.html

情感學習聊天方法

1.非正常聊天法 出人意料的聊天技巧&#xff0c;展示幽默感&#xff0c;讓對方對自己產生興趣 比如對方說&#xff1a;你的朋友圈好多美女啊。回答還好了&#xff0c;沒有了。場面會一度尷尬 但可以這么說&#xff1a;你這樣是在間接夸自己是美女。或者&#xff1a;還好啦&a…

面向對象設計的優點

一旦明白了軟件設計的真諦&#xff08;參見《軟件設計的真諦》&#xff09;&#xff0c;我們就更能理解面向對象設計的優點。簡單說來&#xff0c;它更便于我們在軟件中構建更真實的虛擬世界。 首先&#xff0c;對象的引入方便了在軟件虛擬世界中模擬現實世界。現實世界是由很…

利用SVD-推薦未嘗過的菜肴2

推薦未嘗過的菜肴-基于SVD的評分估計 實際上數據集要比我們上一篇展示的myMat要稀疏的多。 from numpy import linalg as la from numpy import * def loadExData2():return[[0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 5],[0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 3],[0, 0, 0, 0, 4, 0, 0, 1, 0,…