計算機考研複試真題 數字階梯求和
阿新 • • 發佈:2018-11-07
題目描述
給定a和n,計算a+aa+aaa+a...a(n個a)的和。輸入描述:
測試資料有多組,輸入a,n(1<=a<=9,1<=n<=100)。
輸出描述:
對於每組輸入,請輸出結果。示例1
輸入
1 10
輸出
1234567900
/* 解題思路:數目較大,強行相加可能會溢位。這類題大概有兩種思路:1.字串拼接 2.將位數存在數組裡或者用棧. 具體思路:根據遞推式,知道每位都是a,且個位數n個,十位數n-1個,以此類推... 可先算個位,十位,...,先進個位最後輸出個位,正好滿足棧的思想,故分別將其入棧然後最後出棧。*/ #include<iostream> #include<stack> using namespace std; int main(){ int a,n; while(cin>>a>>n){ stack<int>ans; int temp=0; //存放進位 for(int i=n;i>0;--i){ ans.push((i*a+temp)%10); //依次求個位 十位 百位 ... temp=(i*a+temp)/10; //儲存進位 } if(temp!=0) cout<<temp; //輸出最後的進位 while(!ans.empty()){ cout<<ans.top(); ans.pop(); } cout<<endl; } return 0; }