7 38 數列求和 加強版

2021-08-23 14:15:36 字數 921 閱讀 4978

給定某數字a(1≤a≤9)以及非負整數n(0≤n≤100000),求數列之和s=a+aa+aaa+⋯+aa⋯a(n個a)。例如a=1, n=3時,s=1+11+111=123。

輸入數字a與非負整數n。

輸出其n項數列之和s的值。

1 3
123
最近這些天一直在玩,沒怎麼寫**。看到這題直覺就是像以前一樣開闢字元陣列,昨天寫**如下:

#include#define max 200000

using namespace std;

int main()

for(i = 0; i < max; i++) sum[i] = '0';

for(i = 0; i < n; i++)else

sum[j] = temp;

} if(carry)else

} }for(j = i - 1; j >= 0; j--)

cout << sum[j];

}

但是最後乙個測試點超時了,我就知道了自己的思路不對。已經是晚上十二點半了,也沒有心情想乙個新的思路重新寫**了。今中午(σ( ° △ °|||)︴)起來,懶得很,在網上搜了一下別人的題解,感受到了差距!既然像我那樣橫著累加不可以,那就豎著加,提前計算好該位有多少個a,這樣只需要遍歷一次就可以了,大大減少了複雜度,而且**十分簡潔,如下:

#includeusing namespace std;

int main()

if(carry) array[j++] = carry;

for(i = j - 1; i >= 0; i--)

cout << array[i];

}}

怎麼突破常規去思考問題也是很值得思考的一件事情。

7 38 數列求和 加強版

給定某數字a 1 a 9 以及非負整數n 0 n 100000 求數列之和s a aa aaa aa a n個a 例如a 1,n 3時,s 1 11 111 123。輸入數字a與非負整數n。輸出其n項數列之和s的值。如果這道題按數學中的四則運算去直接計算結果,該資料會超出long long 的範圍,...

7 38 數列求和 加強版

7 38 數列求和 加強版 20 分 給定某數字a 1 a 9 以及非負整數n 0 n 100000 求數列之和s a aa aaa aa a n個a 例如a 1,n 3時,s 1 11 111 123。輸入數字a與非負整數n。輸出其n項數列之和s的值。1 3123 思路 直接用長整形累加 簡單,但...

(題解)7 38 數列求和 加強版

給定某數字a 1 a 9 以及非負整數n 0 n 100000 求數列之和s a aa aaa aa a n個a 例如a 1,n 3時,s 1 11 111 123。輸入數字a與非負整數n。輸出其n項數列之和s的值。1 31.n最大為10000,不可用定義整形去求和,需用陣列儲存和的每一位,模擬進製...